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

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

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

下面大概介绍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是解压程序。

    推荐阅读
  • 艾尔登法环亚人集团骨灰如何获取 艾尔登法环攻略

    许多小伙伴在游玩艾尔登法环时不知道亚人集团骨灰在哪,如何获取,下面小编将为大家带来艾尔登法环亚人集团骨灰获取方法,一起来看看吧。艾尔登法环亚人集团骨灰获取方法首先我们先来到光标所在的位置,找到一扇门。打开后进入穿刺地下墓地。进入深处后,在前面的房间里停下,踩一下地板后往回走一点,地板就会升起,这时我们跳下去。拉起开关,继续前进。进入雾中会遇到BOSS归树看门犬,击败它可以获得亚人集团骨灰。

  • 韩剧背后的秘密(韩剧家门的荣光一束耀眼的暖阳)

    何丹雅改变了李江石的人生,何丹雅更改变了整个李家的家族。主动承担家门复兴责任的河万基,为家族,为家人,交出了一份满意的答卷。这其中最大的原因,来自于河万基对自身责任的充分认识。丹雅的身上是新女性的体现。李江石之所以心狠手辣,做事没有原则,其主要的原因是因为家庭。江石这个角色丰富感人,男主拿捏非常到位,层次清晰。河石浩意识到这些是他的新婚妻子改变了他。妻子出了轨还给他下跪,这男人是奇葩。

  • 最近爱奇艺怎么崩了(爱奇艺崩了小米电视崩了)

    爱奇艺崩了小米电视崩了受疫情影响,最近大半个月来,很多小伙伴都不约而同地选择宅家煲剧过日子今晚是《想见你》大结局的日子这部剧自去年上线以来口碑爆棚,豆瓣评分高达9.1分,我朋友“蝶”吃了安利后,很就快成了铁粉之一,因为一周。

  • 干海星的保质期多长(干海星最佳食用时间)

    接下来我们就一起去研究一下吧!干海星的保质期多长干海星保存得当可保质3年或以上。干海星是干货,干货保质期都较长,所以只要平时将其放在低温干燥处保存,并做好防潮措施,可3年不坏。干海星最好在1年内吃完。干海星的保质期虽然很长,但放久了就会变成陈货,因为它并不属于存的越久越好的干货,反而会营养流失,还容易走潮、霉变,影响干海星原有的风味,所以最好在一年内吃完。

  • 吉利汽车是哪个国家的品牌(吉利是中国哪里的品牌)

    吉利汽车成立于1986年,是中国汽车品牌,主要生产越野车、轿车等车型。目前,吉利汽车旗下拥有以博越、岳斌、袁晶为代表的吉利SUV汽车,以及以博瑞、帝豪、宾瑞为代表的轿车。,吉利控股集团向戴姆勒投资90亿美元,持有戴姆勒9.69%的表决权股份成为戴姆勒第一大股东,并承诺长期持有其股份,但并未收购奔驰。8月4日,吉利控股集团、吉利汽车集团、沃尔沃汽车签署合资协议,柯灵汽车成为三方合资品牌,合资公司正式成立。

  • 单耳朵旁的字(单耳朵旁的字是什么)

    接下来我们就一起去研究一下吧!单耳朵旁的字单耳朵旁的字:郸。郸字有两个含义:郸,邯郸市,地名,在河北省。“郸城”,县名,在河南。

  • 海带裙带菜的做法大全(你知道海带裙带菜哪些做法)

    海带裙带菜的做法大全用料:猪排骨400克,裙带菜(或海带)150克,葱段,姜片,精盐,黄酒,香油各适量。用料:海带100g,豆腐200g,火腿肠60g,葱适量,姜适量,油适量,盐适量。用料:裙带菜(或海带)1把,蒜头5瓣。做法:步骤一:裙带菜洗好,切好;步骤二:油下锅,蒜头放入炸香,裙带菜炒1分钟;步骤三:放入一盆水,火烧开,转小火煮20分钟放入盐巴、鸡粉起锅可以吃了。

  • 不孝有三无后为大的俗语(不孝有三无后为大)

    不孝有三无后为大在古装电视剧中,经常听到人们念叨一句“不孝有三,无后为大”这似乎是民间约定俗成,将“无后”,所谓的没有后代子孙,不能为家族承续香火,称为“不孝”,并认为是最大的不孝那么,“不孝有三,无后为大”到底什么。

  • 天文望远镜的构造(天文望远镜有哪些结构组成)

    天文望远镜的构造主镜筒主镜筒是观测星星的主要部件。寻星镜主镜筒通常都以数十倍以上的倍率观测星体。小型赤道冰河时代3仪通常使用三脚架,较重的赤道仪,则为单柱脚。一般可携带型式的赤梅雨歌道仪,都要购置乾电池或蓄电池,适合野外山区的使用。赤道仪的控制盒设计有许多种功能,如此才能观测星体,寻找星体和从事天文摄影等的需求。

  • 10款值得入手的剃须刀(国货高端剃须刀)

    以前我们选择电动剃须刀,飞利浦绝对是优先考虑的品牌,因为在电动剃须刀领域,飞利浦是绝对的销量王,连续多年稳居全球市场第一,在中国市场也是销量第一。笔者查询发现,这款飞科FS903电动剃须刀,在近30日内有超过11万台的销量,累计已有357.6万人买过,成为了名副其实的国货爆款剃须刀。因为飞科有可靠的品质、全面的功能和更便宜的价格,自然就得到了很多消费者的认可,成功地在电动剃须刀市场取代了飞利浦等国外品牌。