数据压缩原理Word文档格式.docx
- 文档编号:18853229
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:12
- 大小:59.45KB
数据压缩原理Word文档格式.docx
《数据压缩原理Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据压缩原理Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
每一个被参数File指定的原文件将被可能的压缩文件所代替,压缩后的档案会加上一个.Z。
延伸档名以区别未压缩的档案,压缩后的档案可以以uncompress解压。
值得注意的是执行compress需要有相应的权限来替换文件。
压缩量依赖于输入大小、由Bits变量指定的单位编码的比特数和公共子串的分布。
典型地,源代码或英文文本将减少50%到60%。
特点
如果调用压缩进程有适当的权限,压缩文件将保留与原文件相同的所有权、方式和修改时间。
如果指定的文件的路径大于1023字节,该命令不工作。
如果没有指定文件,标准输入将被压缩到标准输出。
如果压缩没有减少文件大小,将对标准错误写一个消息而不替换原文件。
compress命令的压缩一般比利用哈夫曼编码或自适应哈夫曼编码实现的压缩更紧凑,计算时间更少,(哈夫曼编码在pack命令中被使用)。
若要将数个档案压成一个压缩档,必须先将档案tar起来再压缩。
常用示例
1.$compress-vdsm.opt
dsm.opt:
Compression:
10.14%Thisfileisreplacedwithdsm.opt.Z.
该命令压缩dsm.opt文件,-v参数将程式执行的讯息印在荧幕上。
标准输出显示压缩百分比为14%。
dsm.opt文件被压缩并重命名为dsm.opt.Z。
2.$compress-b12dsm.old
该命令指定文件中公共子串的比特的最大值为12。
-b参数设定共同字串数的上限,以位元计算,可以设定的值为9至16bits。
由于值越大,能使用的共同字串就越多,压缩比例就越大,所以一般使用预设值16bit。
3.$compress–dfdsm.opt.
该命令将dsm.opt.Z解压成dsm.opt,若档案已经存在-df程式则会自动覆盖档案。
由于系统会自动加入.Z为延伸档名,所以该命令中dsm.opt.Z写成dsm.opt也会当作dsm.opt.Z来处理。
Z
uncompress
Compress的解压也可以由uncompress来完成。
uncompress命令恢复由compress命令压缩的原文件。
每个由File参数指定的压缩文件被除去而由展开后的副本所替换。
展开后的文件与压缩的版本名字相同,但没有.Z扩展名。
如果用户有root用户权限,展开后的文件保留与原文件相同的所有者、组、方式和修改时间。
如果用户没有root用户权限,则文件保留相同的方式和修改时间,但获取新的所有者和组。
如果没有指定文件,则标准输入将展开为标准输出。
示例
$uncompressdsm.opt.Z
该命令解压dsm.opt.Z文件,并重命名为dsm.opt。
pack
pack命令以压缩格式存储由File参数指定的文件。
输入文件由一个原文件名附加.z后缀的压缩文件所代替。
压缩文件维持了同原始文件同样的访问方式、访问和修改日期和所有者。
输入文件名包含不超过253个字节,以允许有空间添加.z后缀。
如果pack命令成功执行,原始文件就被除去。
如果pack命令不能创建更小的文件,它就停止处理并报告不能节省空间。
(节省空间失败通常发生于小文件或者是统一字符分布的文件。
)空间节省的数额取决于输入文件的大小和字符分布频率。
由于译码树形成了每个.z文件的第一部分,因此对于小于3个块的文件不会节省空间。
典型情况下,文本文件减少25%到40%。
文件位置
/usr/bin/pack
特色
采用Huffman编码来压缩文件。
因此pack命令始终只能压缩小于8MB的文件。
pack命令在下列任何一个条件下都不能压缩:
文件已经压缩过;
输入文件名超过了253个字节;
文件有链接;
文件是目录;
文件不能打开;
不能通过压缩节省存储块;
名称为File.z的文件已经存在;
.z文件不能创建;
处理中发生I/O错误。
1.$packdsm.sysdsm.sys.ini
2.pack:
dsm.sys:
Thisfileisreducedinsize47.3%.
pack:
dsm.sys.ini:
Thisfileisreducedinsize47.5%.
该命令压缩名为dsm.sys和dsm.sys.ini的文件并显示修改的文件名。
压缩的版本重命名为dsm.opt.z和dsm.sys.z。
此pack命令显示每个压缩文件的文件大小减小百分比。
3.$pack-dsm.sys
4.pack:
5.Thefilechangedfrom6296to3315bytes.
6.TheHuffmantreehas11levelsbelowtheroot.
7.Thereare49distinctbytesininput.
8.Thedictionaryoverheadis67bytes.
9.Theeffectiveentropyis4.21bitsperbyte.
Theasymptoticentropyis4.13bitsperbyte.
该命令压缩名为dsmwebcl.log的文件并显示该文件的统计信息。
unpack
unpack命令展开由
pack
命令创建的文件。
对每个指定的文件,unpack命令搜索名为File.z的文件。
如果这个文件是压缩文件,则unpack命令用其展开的版本来替换它。
unpack命令通过从File除去.z后缀来给新的文件命名。
如果用户有root用户权限,则新的文件具有和原文件一样的访问方式、访问和修改时间、所有者和组。
如果用户没有root用户权限,则该文件保留同样的访问方式、访问时间和修改时间,但获取新的所有者和组。
unpack命令仅对以.z结束的文件进行操作。
结果,当指定不以.z结束的文件名时,unpack添加该后缀并搜索目录以寻找带有这种后缀的文件名。
/usr/bin/unpack
如果正在解压的文件有链接,unpack命令会把警告写到标准错误。
与其来源的压缩文件比较,新解压的文件有不同的索引节点。
但是,任何其它链接到压缩文件原索引节点的文件仍然存在,仍然处于压缩状态。
以下情况则文件不能解压:
文件名(除.z文件之外)多于253字节;
文件不是压缩文件;
有展开文件名的文件已存在;
不能创建被解压的文件。
$unpackdsm.sys.zdsm.sys.ini
unpack:
Thisfileisnowunpacked.
Thisfileisnowunpacked.
该命令展开了压缩文件dsm.sys.z和dsm.sys.ini.z,并用名为dsm.sys和dsm.sys.ini的文件来替换它们。
unpack命令的文件名可以带有或不带.z后缀。
pax
抽取、写以及列出归档文件成员;
复制文件和目录层次结构。
-r和-w标志指定了归档操作的类型。
通过pax主要可以实现4大功能包括:
列出已归档文件的成员文件(列表方式);
使用-r标志抽取归档文件(读取方式);
使用-w标志写归档文件(写方式)用-r和-w标志复制文件(复制方式)。
pax命令应该是用于系统转储和2GB以上的映像的首选存档方法。
pax命令还可以用于查看和修改tar和cpio格式的文件,下面的示例中将会给出相应解释。
/usr/bin/pax
系统缺省支持64-位POSIX-定义的数据格式。
目的是允许归档大文件,例如dump文件。
归档文件大小可以大于或等于8GB
支持长用户名(或组名)
支持大于2097151的超大UID/GID
支持长路径名或链接名
用-o标志可以修改归档算法
注意事项
在读取或复制方式下,如果需要中间目录来抽取归档成员,pax执行与mkdir子例程相同的操作,中间目录作为路径参数,值S_IRWXU作为方式参数。
如果没有任何指定的模式或文件操作数与至少一个文件或归档成员匹配,pax为每个不匹配的模式或文件操作数写一条诊断消息到标准错误,并以错误状态退出。
遍历目录过程中,pax将检测无限循环;
例如,进入一个作为最后访问文件的祖先的先前访问的目录。
在检测到无限循环时,pax将诊断消息写到标准错误然后终止。
当pax处于读取方式或列表方式,使用-xpax归档格式和文件名、链接名、所有者名或任何其他扩展的头记录中的字段,这些字段无法从paxUTF8编码集格式转换到当前编码集和语言环境,pax写诊断消息到标准错误,如-oinvalid=选项所描述的那样处理文件,然后处理归档中的下一个文件。
对于AIX5.3,在缺省情况下pax命令将忽略扩展属性。
-U选项通知pax来归档或恢复扩展属性,它包括ACL。
-pe选项将保留ACL。
指定-pe选项时,如果pax无法保留ACL,诊断消息将写入标准错误,但是不会删除抽取的文件。
将返回非零退出代码。
pax归档文件中的扩展属性条目需要新的记录类型。
1.$pax-wfmytest.ar-xpaxtest1
该命令将在当前目录下为目录test1创建pax格式的归档mytest.ar。
使用-w标志来写归档文件,-x参数指定输出归档格式。
pax有3中输出格式:
pax、copyio、ustar。
pax为缺省数据交换格式。
特定字符归档文件的格式的缺省分块值是10240。
支持以512递增的从512到32256的分块值;
cpio扩展cpio交换格式。
特定字符归档文件的格式的缺省分块值是5120。
支持以512递增的从512到32256的分块值;
ustar扩展tar交换格式。
支持以512递增的从512到32256的分块值。
值得注意的是:
pax并不一定会减小目录的大小。
2.$pax-rvfbin.ar-odelete=path
3.PAXformatarchive
4.bin
5.bin/tsmstats.lck
6.bin/dsmcert.kdb.z
7.bin/dsm.tar
8.bin/dsmcert.crl.Z
9.bin/dsm.opt
bin/dsm.sys.ar
该命令将抽取bin.ar,抽取过程中要忽略pax格式的归档的路径名。
当归档文件中包含ASCII码,抽取到z(VM/ESA)操作系统时为了避免出现乱码现象我们需要在添加其他的标志来进行抽取。
10.$pax-r-fmyfile1.pax-ofrom=ISO8859-1,to=IBM-1047
该命令将抽取myfile1.pax文件,该命令保证了归档文件中的ASCII码解压到zVM/ESA)操作系统的正常使用。
11.$pax-rwbinnewdir
该命令将bin目录层次结构复制到newdir中同时保留了源文件的大多数属性,如硬连接数和文件访问次数等。
如果newdi目录中包含相同的文件或目录那么该命令不会覆盖原有的目录结构,该命令会提示类似下面的信息:
12.$pax:
bin:
Thefile/directoryexistsandwillnotbeoverwritten.
tar
tar是一个已移植到Linux中的经典UNIX命令。
tar是tapearchive(磁带归档)的缩写,最初设计用于将文件打包到磁带上,现在也可用于其它存储介质。
使用tar可以打包整个目录树,这使得它特别适合用于备份。
归档文件可以全部还原,或从中展开单独的文件和目录。
备份可以保存到基于文件的设备或磁带设备上。
文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。
tar是与文件系统无关的。
它可以使用在ext2、ext3、jfs、Reiser和其他文件系统上。
单独使用时,生成具有.tar扩展名的文件。
当与Gzip结合用于数据压缩时,生成的文件扩展名可能是.tgz、.tar.gz或与compress结合用于数据压缩时,生成的文件扩展名则是.tar.Z。
tar命令通过将文件写入归档存储介质或将文件从介质中取回,来处理归档。
由tar命令使用的文件通过File参数来表示。
如果File参数引用一个目录,则引用该目录并递归引用该目录下全部的文件和目录。
tar命令有两组标志:
必需标志和可选标志。
必需标志控制tar命令的操作,包括-c、-r、-t、-u和-x标志。
要执行tar命令至少要选择一个必需标志。
选择了必需标志后,您可以选择一个可选标志,但可选标志对控制tar命令不是必需的。
/dev/rmt0指定缺省磁带设备。
/bin/tar指定tar命令的符号链接。
/usr/bin/tar包含tar命令。
由于在tar命令中对头块空间的限制,当恢复到某些系统时,大于65,535的用户号(UID)和组标识号(GID)将毁坏。
大小约束只影响所有权和许可权而不对数据造成损害。
ustar头格式允许文件大到8GB。
因此,tar命令支持归档最大8GB的文件。
tar不保留任何稀疏分配的文件的稀疏属性。
任何在恢复前原是稀疏的文件,将按文件大小在文件系统内分配其所有空间。
tar打包不一定能够压缩文件大小。
1.$tar–cmyfile1
该命令将文件myfile1写到缺省磁带机上新的归档中(例如/dev/rmt0)。
通常AIX会连接一些磁带,如果没有物理磁带或者缺省磁带没有配好tar命令就会打印出类似下面的错误信息
2.$tar:
/dev/rmt0:
Thereisarequesttoadeviceoraddressthatdoesnotexist.
为了避免上述情况发生通常建议用户在使用tar命令时指定-fArchive,使用Archive变量表示要读或写的归档。
3.$tar–cvfmyfile1.tarmyfile1
该命令将文件myfile1在当前目录下归档,归档文件名为myfile1.tar,同时处理每个文件时列出它们的名称。
有时候我们只需要某个类型的文件并不想打包整个文件夹,可以通过使用tar命令时指定-LInputList实现。
-L选项的Inputlist参数是一个文件名称,该名称列出需要归档的文件和目录。
4.$tar–cvf/usr/log.tar–Llog_list
该命令归档log_list文件中列出的文件和目录,归档文件到/usr/log.tar。
这里的log_list列表文件可以通过一下命令获得:
5.$ls*.log>
log.lst
Tar文件的恢复也是通过tar命令来完成的。
6.$tar–xfmyfile1.tar
该命令恢复归档文件myfile1.tar到当前目录。
有时我们想先看看tar包中有那些文件,然后再决定是否进行解tar,通过-t标志可以按照文件在归档中的顺序列出文件。
7.$tar–vtfmyfile1.tar
该命令列出myfile1.tar磁盘归档文件中各文件的名称。
值得注意的是文件可能会多次列出。
有时候我们会遇到gzip格式的文件,通过-z参数tar同样可以解压gzip格式的文件。
8.$tar–zxvfmyfile1.tar.gz
该命令解压myfile1.tar.gz文件到当前目录。
GZIP
gzip最早由Jean-loupGailly和MarkAdler创建,用于UNIX系统的文件压缩。
Gzip是一种无损失的数据压缩格式。
gzip(也称zip或zlib)所使用的算法是开源、无专利的LZ77(Lempel-Ziv1977)算法的变体。
该算法寻找输入数据内的重复字符串。
二次出现的字符串由一个指向前一字符串的指针(以对的形式--距离和长度)代替。
其中,距离限定为32KB,长度限定为258字节。
如果字符串没有在这前32KB内出现,它就会作为文字字节序列发出(这里所说的字符串定义为随意字节序列,并不仅限于可打印的字符)。
我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。
现今已经成为Internet上使用非常普遍的一种
数据压缩格式,或者说一种文件格式。
实例
1.$gzip*
2.gzip:
dsmcert.crl.Zalreadyhas.Zsuffix–unchanged
3.gzip:
dsmerror.log.gzalreadyhas.gzsuffix--unchanged
gzip:
dsmwebcl.log.zalreadyhas.zsuffix--unchanged
该命令压缩把当前目录下的每个文件压缩成.gz文件。
当前目录下已经存在的压缩文件,例如.Z.z.gz后缀文件,gzip将不对它们进行操作;
对.ar.tar作为后缀的文件责仍然可能进行压缩。
4.$gzip–dv*
5.[root@aixsvt01>
/usr/..../bin]$gzip-dv*
6.cert.arm.gz:
26.6%--replacedwithcert.arm
7.dsmcert.crl.Z:
18.7%--replacedwithdsmcert.crl
dsmcert.kdb.z:
66.7%--replacedwithdsmcert.kdb
该命令把当前目录下每个压缩的文件解压,并列出详细的信息。
该命令可以解压当前目录下多种压缩格式的压缩文件,例如.Z.z.gz后缀的压缩文件。
8.$gzip-l*.gz
9.compresseduncompr.ratiouncompressed_name
10.63182426.6%cert.arm
11.4412-16.6%dsmcad.info
67583622.8%(totals)
该命令详细显示当前目录下.gz后缀压缩的文件的信息但是并不解压。
12.gzipmyfile.tar
该命令压缩tar备份文件myfile.tar,此时压缩文件的扩展名为.tar.gz。
zcat
zcat命令允许用户扩展并查看压缩文件而不用将该文件解压。
zcat命令并不重命名扩展的文件,也不除去.Z的扩展名。
zcat命令将扩展输出写入标准输出。
$zcatdsm.old.Z
SERVERNAMEtest
COMMMtcpip
该命令查看dsm.opt.z文件的解压内容被写入标准输出。
文件名并未被重命名也并未解压。
总结
如果您是计划对AIX系统的数据进行压缩,要选择合适的压缩工具进行压缩您需要考虑几个方面的因素。
例如:
选择的对象是目录还是单纯的文件;
压缩的数据是否大于2g;
对压缩的比例和时间有什么要求等等。
开始压缩前您可以参照图2来进行压缩工具的筛选。
各种压缩工具的具体特点请参照本文前面的内容。
图2.压缩工具选择
参考资料
参考
AIX5LInformationCenter:
该手册详细介绍了AIX的技术细节
阅读develperWorks文章
Windows到Linux之旅
AIXandUNIX专区:
developerWorks的“AIXandUNIX专区”提供了大量与AIX系统管理的所有方面相关的信息,您可以利用它们来扩展自己的UNIX技能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据压缩 原理