第8章 归档和压缩
虽然在闲谈时,归档和压缩的区别有时比较模糊,但实际上对文件进行归档和压缩是完全不同的。归档可以是把10个文件组合到一个文件中,在大小上没有什么不同。如果你有10个100 KB的文件,对它们进行归档,最终得到的是一个1000 KB的文件。而对这10个文件进行压缩,最终得到的文件的大小可能相差很多,从几千字节(KB)到接近原来大小的100 KB,这得由原始文件的类型来决定。
说明 事实上,有可能在压缩过程中得到的文件的体积会更大!如果文件已经压缩过,那么再次压缩就会增加一些额外的开销,导致生成的文件会稍微大些。
本章提到的所有归档和压缩文件格式(如zip
、gzip
、bzip2
以及tar
)都很流行,而zip
可能是世界上最广泛使用的格式。这是因为它在Windows中几乎是通用的,而且差不多所有主要的(和最次要的)操作系统都可以很好地支持zip
和unzip
,所以用zip
压缩的文件在Linux和Mac OS上也能正常使用。如果要把归档文件发送给其他用户,但是不知道他们会使用什么操作系统,zip
格式就是安全的选择。
gzip
是一个开源程序,用于取代旧的Unix程序compress
。几乎在世界上所有基于Unix的系统中都能够找到它,包括Linux和Mac OS X,但在Windows中比较少见。如果你在和基于Unix计算机的用户来回发送文件,gzip
格式将是安全的选择。
bzip2
命令是Linux系统中的后起之秀,主要用于取代gzip
,bzip2
创建的文件体积更小,但需要以牺牲速度作为代价。不过,目前计算机的速度如此之快,以致于大多数用户都不会注意到gzip
或bzip2
在压缩一组文件时使用的时间有多大差别。
说明 Linux Magazine发表过一篇对几种不同的压缩格式进行比较的文章,网址为http://www.linux-mag.com/content/view/1678/43/。
zip
、gzip
和bzip2
主要用于压缩(虽然zip
也可以用于归档);而tar
命令则只有一个功能,就是归档,而且长期以来人们一直这么用它。tar
几乎完全应用于基于Unix的计算机。如果你下载的是程序源代码,肯定将会遇到tar
文件(也称为tar ball),而且几乎每一个Linux用户在他的生涯中都可能遇到tar ball。