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


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 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: