数据压缩原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AIX 上总有一种压缩方式适合你

当今世界每天产生大量的数据,有些数据我们需要进行压缩,压缩数据的好处不言而喻:节省空间;方便传输;加密保护等等。很多压缩工具应运而出,每种工具都有自己的特点。对于AIX 平台上的压缩方法也很多compress、pack、gzip、pax、tar 等等。本文将首先简单介绍一下压缩的基本原理然后详细介绍AIX 平台的常用压缩工具并针对它们各自的特色进行比较,让读者对对AIX 平台的压缩有针对性的认识,从而能够根据不通的需要选择合适的压缩工具。

数据压缩的原理

数据压缩是指在不丢失信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率的一种技术方法。或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。数据压缩包括有损压缩和无损压缩。无损压缩是可逆的;有损压缩是不可逆的。

计算机处理信息是以二进制数(0 和1)的形式表示的,压缩软件把二进制信息中相同的字符串以特殊字符标记起来,从而实现缩小文件大小来达到压缩的目的。压缩的理论基础是信息论。从信息的角度来看,压缩就是去除掉信息中的冗余,即去除掉确定的或可推知的信息,而保留不确定的信息,也就是用一种更接近信息本质的描述来代替原有的冗余的描述,这个本质的东西就是信息量。

数据压缩的硬件和软件工具也非常多,本文将针对AIX 平台常见的几种数据压缩工具进行介绍和比较并提供常用的示例进行解说,希望您能从中选择合适的压缩工具进行压缩。

AIX 平台上,通常我们看到的 .Z .gz .z .ar .tar 后缀的文件都是压缩文件。通过compress 可以生

成 .Z 压缩文件,通过compress、uncompress、gzip 可以解压 .Z 格式的压缩文件;通过gzip 可以生成 .gz 压缩文件,通过gzip 可以解压 .gz 格式的压缩文件;通过pack 可以生成 .z 压缩文件,通过unpack、gzip 可以解压 .z 格式的压缩文件;通过pax 可以生成 .ar 压缩文件,通过pax 可以解压 .ar 格式的压缩文件;通过pax、tar 可以生成 .tar 压缩文件,通过pax、tar、untar、可以解压 .tar 格式的压缩文件。图 1 描述了各种类型文件的压缩及解压可以选择的AIX 工具。

图 1. 不同文件类型的压缩及解压

下面我们将详细介绍AIX 上主要压缩工具的特点已经用法。

回页首compress

compress 是一个相当古老的UNIX 档案压缩指令,利用自适应的Lempel-Zev 编码来减少文件大小。

每一个被参数File 指定的原文件将被可能的压缩文件所代替,压缩后的档案会加上一个 .Z。延伸档名以区别未压缩的档案,压缩后的档案可以以uncompress 解压。值得注意的是执行compress 需要有相应的权限来替换文件。

压缩量依赖于输入大小、由Bits 变量指定的单位编码的比特数和公共子串的分布。典型地,源代码或英文文本将减少50% 到60%。

特点

∙如果调用压缩进程有适当的权限,压缩文件将保留与原文件相同的所有权、方式和修改时间。

∙如果指定的文件的路径大于1023 字节,该命令不工作。

∙如果没有指定文件,标准输入将被压缩到标准输出。

∙如果压缩没有减少文件大小,将对标准错误写一个消息而不替换原文件。

∙compress 命令的压缩一般比利用哈夫曼编码或自适应哈夫曼编码实现的压缩更紧凑,计算时间更少,(哈夫曼编码在pack 命令中被使用)。

∙若要将数个档案压成一个压缩档,必须先将档案tar 起来再压缩。

常用示例

限,则文件保留相同的方式和修改时间,但获取新的所有者和组。如果没有指定文件,则标准输入将展开为标准输出。

示例

∙采用Huffman 编码来压缩文件。因此pack 命令始终只能压缩小于8MB 的文件。∙pack 命令在下列任何一个条件下都不能压缩:文件已经压缩过;输入文件名超过了253 个字节;文件有链接;文件是目录;文件不能打开;不能通过压缩节省存储块;

名称为File.z 的文件已经存在;.z 文件不能创建;处理中发生I/O 错误。

示例

如果正在解压的文件有链接,unpack 命令会把警告写到标准错误。与其来源的压缩文件比较,新解压的文件有不同的索引节点。但是,任何其它链接到压缩文件原索引节点的文件仍然存在,仍然处于压缩状态。

∙以下情况则文件不能解压:文件名(除 .z 文件之外)多于253 字节;文件不能打开;

文件不是压缩文件;有展开文件名的文件已存在;不能创建被解压的文件。

示例

∙系统缺省支持64- 位POSIX- 定义的数据格式。目的是允许归档大文件,例如dump 文件。归档文件大小可以大于或等于8 GB

∙支持长用户名(或组名)

∙支持大于2097151 的超大UID/GID

∙支持长路径名或链接名

∙用-o 标志可以修改归档算法

注意事项

∙在读取或复制方式下,如果需要中间目录来抽取归档成员,pax 执行与mkdir 子例程相同的操作,中间目录作为路径参数,值S_IRWXU 作为方式参数。

∙如果没有任何指定的模式或文件操作数与至少一个文件或归档成员匹配,pax 为每个不匹配的模式或文件操作数写一条诊断消息到标准错误,并以错误状态退出。

∙遍历目录过程中,pax 将检测无限循环;例如,进入一个作为最后访问文件的祖先的先前访问的目录。在检测到无限循环时,pax 将诊断消息写到标准错误然后终止。

∙当pax 处于读取方式或列表方式,使用-x pax 归档格式和文件名、链接名、所有者名或任何其他扩展的头记录中的字段,这些字段无法从pax UTF8 编码集格式转换到当前编码集和语言环境,pax 写诊断消息到标准错误,如-o invalid= 选项所描述的那样处理文件,然后处理归档中的下一个文件。

∙对于AIX 5.3,在缺省情况下pax 命令将忽略扩展属性。-U 选项通知pax 来归档或恢复扩展属性,它包括ACL。-pe 选项将保留ACL。指定-pe 选项时,如果pax 无法保留ACL,诊断消息将写入标准错误,但是不会删除抽取的文件。将返回非零退出代码。pax 归档文件中的扩展属性条目需要新的记录类型。

示例

1. $pax -wf mytest.ar -x pax test1

该命令将在当前目录下为目录test1 创建pax 格式的归档mytest.ar。使用-w 标志来写归档文件,-x 参数指定输出归档格式。pax 有 3 中输出格式:pax、copyio、ustar。

pax 为缺省数据交换格式。特定字符归档文件的格式的缺省分块值是10240。支持以512 递增的从512 到32256 的分块值;cpio 扩展cpio 交换格式。特定字符归档文件的格式的缺省分块值是5120。支持以512 递增的从512 到32256 的分块值;

相关文档
最新文档