一、windows下最常见的压缩文件有两种:* .zip 和 * .rap
而Linux下却有很多,让人混淆:* .tar 、* .tar.gz 、* .tgz 、* .gz 、* .Z 、* .bz2
二、基础概念
打包:将一堆文件或目录什么的变成一个总的文件。
压缩:将一个大的文件经过某种压缩算法变成一个小文件。
为什么要区分这两个概念呢?因为Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。
三、tar命令
1. 单独使用(man tar 可以查看)
常用参数:-c 产生新的包
-r 像压缩归档文件末尾追加文件
-u 更新原压缩包中的文件,仅将较新的文件附加到存档中
-t 列出存档中文件的目录
-x 解包
-f 指定包的文件名,用在最后一个参数
-v 详细显示处理的文件
基本用法:# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
2. 为了方便用户在打包解包的同时压缩或解压文件,tar命令提供了一种特殊的功能,就是可以在打包解包的同时调用其他的压缩程序,比如:gzip,bzip2等。
扩展用法:1) tar调用gzip
gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。 tar中使用-z这个参数来调用gzip。下面来举例说明一下:
# tar -czf all.tar.gz *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
# tar -xzf all.tar.gz
这条命令是将上面产生的包解开。
2) tar调用bzip2
bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:
# tar -cjf all.tar.bz2 *.jpg
这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2
# tar -xjf all.tar.bz2
这条命令是将上面产生的包解开
四、gzip命令
1. (1)缺省情况下, gzip 将原始文件名和时间信息保存在压缩后的文件中。
gunzip 的功能 与 gzip -d 功能一样。gunzip 将命令行中以.gz, -gz, .z, -z, _z 或 .Z结尾并具有正确标志头的文件
解压缩,并以去掉扩展名的解压缩文件替换原文件。 gunzip 也能识别扩展名为 .tgz 和 .taz 的文件,并将其分别当作 .tar.gz 和 .tar.Z 的缩写。gunzip 目前能够解压由 gzip, zip, compress, compress -H 以及 pack产生的文件。 对输入格式的检测是自动的。
2.(man gzip)可以看到详细的内容,这里简单列出常用的参数:
-c
-d
-l
compressed size:压缩文件的长度
uncompressed size:压缩前文件的长度
ratio:压缩率(如果未知则为0.0%)
uncompressed_name:压缩前的文件名
对于非gzip 格式的文件,压缩前文件长度显示为 -1,例如由compress压缩的 .Z文件。可用下列命令得到这种文件压缩前的长度:
zcat file.Z | wc -c (zcat 的功能与 gunzip -c. 相同。)
如果同时指定了 --verbose选项,下列项目也被列出:
method:压缩方式
crc:未压缩数据的32位CRC校验码
date & time:压缩前文件的时间信息
目前支持的压缩方式有deflate、compress、lzh(SCO下的compress-H)以及pack等方式。对于非gzip格式的文件,crc校验码显示为ffffffff。
-r
-t
-v 对每一个压缩和解压的文件,显示文件名和压缩比。