一、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  对每一个压缩和解压的文件,显示文件名和压缩比。