百摩网
当前位置: 首页 生活百科

怎样压缩文件大小(制作压缩包文件的方法)

时间:2023-07-10 作者: 小编 阅读量: 1 栏目名: 生活百科

下面大概介绍Linux下tar打包与gz、bz2等压缩工具的使用。Linux下最常用的打包程序就是tar,使用tar程序打出来的包我们常称为tar包,tar包文件的扩展名通常是.tar。tar命令常用的选项及各自的含义如下图所示。注:以上与“2.1、tar文件的结构一致”!!!

一、压缩介绍

现在这个时代电子信息发展迅猛,数据量越来越庞大,小米10手机摄像头技术都达到1亿像素;2021年9月,三星甚至提出2亿像素的传感器技术。因此,压缩数据成为数据存储和传输中用于降低成本和时间的关键技术。

2亿像素的ISOCELL HP1,5000万像素的ISOCELL GN5

压缩技术又分为有损压缩与无损压缩两类,两者的主要区别是:有损压缩还原时跟原始信息不是完全一样,但是不影响使用,比如音频、图片、视频类信息;无损压缩还原时跟原始信息完全一样,比如本文要介绍的常用压缩软件RAR,Zip等压缩方法。

Windows下比较熟知的压缩方法有zip或者RAR,为了便于压缩与解压的使用,开发了许多的解压缩软件,比如:winrar、好压、快压、360压缩等。但是在Linux比较常用的压缩方法却是gzip、bzip2、compress等,比如官方下载的gcc编译器源码压缩文件就是基于gzip压缩的:gcc-11.2.0.tar.gz。

打包或者压缩格式很多,目前主流使用的有如下表所示几种:

表一

表二

对于表二类似“xxx.tar.gz”等格式的文件,是Linux下的一种文件格式,生成该格式文件分为两个步骤,(1)、xxx文件打包为xxx.tar;(2)、xxx.tar压缩为xxx.tar.gz。下面大概介绍Linux下tar打包与gz、bz2等压缩工具的使用。

二、Linux打包tar

由于Linux中的很多压缩程序只能针对一个文件进行压缩,因此如果包含许多文件,则需要将所有文件打包为一个文件,然后再压缩。

Linux下最常用的打包程序就是tar,使用tar程序打出来的包我们常称为tar包,tar包文件的扩展名通常是.tar。生成tar包后,就可以用其它的程序(gzip或bzip2等)来进行压缩了。

2.1、tar文件结构

Tar指令只用于多文件打包,并不压缩文件,因此打包后的文件并没有减小,反而由于在打包时会在每个文件头加入512字节的tar头部信息,使得打包后的文件略微变大。比如当前有文件a1.c、a2.c、a3.c,每个文件100k,打包后文件的文件结构如下图所示:

如上图所示,3个文件共300k,通过tar打包后,至少为301.5k;因为tar文件是按块存储,每个块为512bytes大小,所以tar文件大小应该为512字节的倍数,如果a1.c文件大小为99.7k,则通过tar打包时,最后0.3k必须填充为0,补足至100k(满足512字节的倍数)。

2.2、tar_header头部结构

tar_header为512字节的块结构,保存后面的文件信息,tar源码的tar.h文件中该header结构如下图所示,该header结构刚好是一个块大小,即512字节每个块。

tar源码版本为“tar-1.26.tar.gz”,可通过以下网盘链接下载:

链接:http:///s/1T34dYxBRWKYE8jmFvv_2aw

提取码:ppw2

tar打包函数入口为create_archive(),在源码文件create.c中。

2.3、tar命令打包

tar 命令用于打包操作时,该命令的基本格式为:tar [选项] 源文件或目录。tar命令常用的选项及各自的含义如下图所示。

(1)、创建2个文件a1.txt、a2.txt,分别输入如下内容:

(2)、tar命令进行打包,生成aTar.tar打包文件

2.4、aTar.tar文件内容分析

通过UltraEdit打开上面tar命令打包生成的aTar.tar文件,可以看到aTar.tar文件格式为:首先是a1.txt的tar_header信息,然后是a1.txt的内容;接着是a2.txt的tar_header信息,然后是a2txt的内容。

(1)、第一块:从地址0x00000000h位置到0x00000200h之间(共512字节)是a1.txt的tar_header信息:

根据如上结构struct posix_header结构体的定义,说明几个字段含义:

a>、最开始的位置存储name,大小为100字节,内容为61 31 2E 74 78 74 00,即为“a1.txt”;

b>、后面是mode字段内容为30 30 30 30 36 34 34 00,即为“0000644”,表示a1.txt文件的操作权限,与ls命令查询a1.txt文件权限一致。

c>、uid、gid信息,即当前linux登录用户id与组id,这两个id的内容均为30 30 30 31 37 35 30 00,即为“0001750”,该值为八进制,转为十进制为1000,与id命令查询的结果一致。

d>、size字段值为30 30 30 30 30 30 30 30 30 33 33 00,即为“00000000033”,该值为八进制,转为十进制为27,表示a1.txt文件大小为27字节,与文件内容大小一致:

e>、magic字段值为75 73 74 61 72 20,即为“ustar”,表示当前包为tar文件;

f>、uname与gname为当前linux登录用户名与组名,即kevin。

(2)、第二块:从地址0x00000200h位置到0x00000400h之间(共512字节)是a1.txt的内容,虽然a1.txt的内容为27字节,但是块大小为512,不足地方补0。

(3)、第三块:从地址0x00000400h位置到0x00000600h之间(共512字节)是a2.txt的tar_header信息:

a2.txt的tar_header信息格式与a1.txt的tar_header一致,其size字段为“00000000025”,转为十进制为21,表示a2.txt内容为21个字符,确认一致。

(4)、第四块:从地址0x00000600h位置到0x00000800h之间(共512字节)是a2.txt的内容,虽然a2.txt的内容为21字节,但是块大小为512,不足地方补0。

注:以上与“2.1、tar文件的结构一致”!!!

三、Linux压缩至gz、bz2、z格式

Linux下文件压缩属于无损压缩,解压缩还原时必须和原文件一致,否则会导致程序运行错误;其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如如下文件:

重复的字符串“小扇子的笔记”可以用一个代码“a”表示,则文件内容可以表示为:

这文件的大小就缩小了,还原回来也是无信息损失的。

当然压缩算法远比这个复杂,Linux下的压缩工具常用的有GNU组织开发的gzip(.gz)、压缩能力更强的bzip2(.bz2)、比较古老的压缩指令compress(.Z)、以及最新的提供最佳压缩率的XZ(.xz)。

这些压缩命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件;同时只能压缩单个文件,因此通常与tar打包命令一起使用,在tar打包命令中加入如下选项即可调用对应的压缩命令进行压缩:

3.1、gzip压缩

在tar指令中加入‘-z’选项,调用gzip进行压缩。

解压缩命令为:tar –xzf a.tar.gz。

3.2、bzip2压缩

在tar指令中加入‘-j’选项,调用bzip2进行压缩。

解压缩命令为:tar –xjf a.tar.bz2。

3.3、xz压缩

在tar指令中加入‘-J’选项,调用xz进行压缩。

解压缩命令为:tar –xJf a.tar.xz。

3.4、compress压缩

现在新的Linux系统都没有安装ncompress压缩工具,需要先安装:

然后在tar指令中加入‘-Z’选项,调用compress进行压缩。

解压缩命令为:tar –xZf a.tar.Z。

3.5、其他压缩工具

Windows下常用的压缩格式zip与rar在Linux下也是支持的。

(1)、Linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序;

(2)、linux下处理.rar文件,需要安装RAR for Linux,如下指令:# tar -xzpvf rarlinux-3.2.0.tar.gz# cd rar# make安装后有rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。

    推荐阅读
  • iPhone 12 死当 怎么办?重启设备靠这两个按键

    iPhone 12 死当 怎么办?重启设备靠这两个按键▲iPhone12强制重启的方式靠电源键与音量纽(图/记者林敬旻摄)记者谢仁杰/综合报道偶尔在手机使用的过程中,会碰到一些手机当机到无法动弹,或者碰到一些因为某些程式而陷入无法解决的情况,必须将其重新。

  • 煤矿安全标语(煤矿安全标语排版图片)

    6、落实一项措施,胜过十句口号。

  • 哪些人不能接种新冠病毒疫苗(新冠病毒疫苗那些人不可以接种)

    新冠病毒灭活疫苗说明书中提示:慢性疾病的急性发作期、严重慢性疾病患者慎用。甲状腺功能减退、甲状腺功能亢进患者服用稳定剂量药物,病情平稳的,原则上可以进行接种。此外,心脏病等心血管系统疾病如果处于急性发作期应暂缓接种疫苗。因食物过敏、花粉过敏,或者其他药物,包括青霉素过敏,这是可以接种疫苗。罕见的急性过敏反应,一般在接种后30分钟内出现,因此要求受种者在接种疫苗之后在现场留观30分钟。

  • 诗组词(你能组多少个)

    我们一起去了解并探讨一下这个问题吧!诗组词诗人、诗词、诗歌、题诗、诗意、诗篇、情诗、律诗、诗韵、新诗、诗史、组诗、诗风、唱诗、诗律、诗兴、诗章、诗抄、史诗、诗轴、诗料、诗场、诗燕、诗启、诗钟、诗扇、诗流、散诗、描诗、诗经、诗仙、诗鬼、歌诗、小诗、诗佛。

  • 最近宝宝一直拉肚子怎么办(宝宝爱拉肚子妈妈们先别慌)

    还有要注意的是宝宝腹部的保暖问题,这个很重要,如果宝宝肚子着凉,也是会引起消化不良,或者积食的情况的。另外可以根据宝宝的年龄阶段,服用一些健脾开胃、固本培元的中成药,来辅助治疗宝宝的消化不良。如果宝宝长期消化不良,应考虑其他因素,建议还是及早带孩子看医生,由专科医生指导治疗,以便及时改善孩子的状况。

  • 卡其色内搭配什么外套男士(卡其黑很适合男士的一种搭配)

    在穿着风衣和大衣时,能利用好卡其配黑的色调,造型就会变得更加百搭,哪怕是小个子也能穿出很好的效果。一些白色的内搭或者服饰配件,就是用来点缀造型很好的方式,这样造型不但统一,而且有小细节的呼应点缀让造型更加丰富有层次。所以在冬季把卡其色和黑色处理好,搭配风格非常的时髦多样。

  • 一面东风百万军当年此处定三分的意思(一面东风百万军当年此处定三分的意思是什么)

    下面内容希望能帮助到你,我们来一起看看吧!一面东风百万军当年此处定三分的意思一面东风百万军当年此处定三分的意思:一阵东风强似百万大军,当年刘备、孙权、曹操就是因为赤壁这一战,而决定了三分天下的大势。汉家火德终烧贼,池上蛟龙竟得云。江水自流秋渺渺,渔灯犹照获纷纷。我来不共吹箫客,乌鹊寒声静夜闻。

  • qq透明头像教程4.1版(QQ玩法手机透明头像来装逼)

    小编经常看到别人在装逼,弄了一个透明头像,好装逼对不对,好吧,大家一起来装逼!切换到复杂模式,你可以自定义其中的图片和文字,还可以导入别人的头像,让逼装的更加优雅。欢迎订阅TASTER头条号:TASTERtaster-以及加入Q群369550684有好的技巧和APP一起分享

  • 吊兰的种植方法(怎么种植吊兰)

    吊兰的种植方法吊兰生长适温为20~24℃,此时生长最快,也易抽生匍匐枝。吊兰适应性强,成活率高,一般很容易繁殖。吊兰分株时,可将吊兰植株从盆内托出,除去陈土和朽根,将老根切开,使分割开的植株上均留有三个茎,然后分别移栽培养。吊兰的种子繁殖可于每年3月进行。吊兰不易发生病虫害,但如盆土积水且通风不良,除会导致烂根外,也可能会发生根腐病,应注意喷药防治。

  • 冬天宝宝要用爽身粉吗(冬天要给宝宝用爽身粉吗)

    冬天沐浴后不需要给新生儿用爽身粉,秋冬天气干燥给宝宝用爽身粉容易使婴儿皮肤干燥,还会在皮肤的褶皱里结块,导致发炎和生皮疹。所以,秋冬季节没有必要给宝宝用爽身粉。宝宝爽身粉用到多大一般来说三岁就可以不用爽身粉了。而且爽身粉虽好,也不宜经常使用。宝宝天性好动,动就容易出汗,所以爽身粉容易被汗液粘结,不仅达不到爽身效果,还容易引起毛孔堵塞。