<aside> 💡 Linux 上常见的压缩指令有 gzip,bzip2 以及最新的 xz。压缩率从高到低为xz,bzip2,gzip。压缩率越高,压缩所花的时间就越长。所以实际工作中需要根据具体情况在压缩率和压缩时间中做出抉择。

</aside>

以下为几个常见的压缩文件扩展名:

*.Z         compress 程序压缩的文件;
*.zip       zip 程序压缩的文件;
*.gz        gzip 程序压缩的文件;
*.bz2       bzip2 程序压缩的文件;
*.xz        xz 程序压缩的文件;
*.tar       tar 程序打包的数据,并没有压缩过;
*.tar.gz    tar 程序打包的文件,其中并且经过 gzip 的压缩
*.tar.bz2   tar 程序打包的文件,其中并且经过 bzip2 的压缩
*.tar.xz    tar 程序打包的文件,其中并且经过 xz 的压缩

compress指令已经过时了,取而代之的是gzip。

gzip, zcat/zmore/zless/zgrep

gzip可以解开 compress,zip 与 gzip 等软件所压缩 的文件。 gzip 所建立的压缩文件为 *.gz,gzip语法:

gzip [-cdtv#] 文件名
zcat 文件名.gz
选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件案的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

使用gzip压缩/temp/services文件,并查看压缩比:

root@ubuntu:/temp# gzip -v services 
services:	 61.6% -- replaced with services.gz
root@ubuntu:/temp# ls -lh /etc/services services.gz 
-rw-r--r-- 1 root root  20K Oct 25  2014 /etc/services
-rw-r--r-- 1 root root 7.4K Apr 17 16:15 services.gz

因为services是文本文件,所以可以使用zcat/zmore/zless 去读取 :

root@ubuntu:/temp# zcat services.gz 
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
...

将services.gz解压缩:

root@ubuntu:/temp# gzip -d services.gz

使用gzip指令以最好的压缩比压缩services,并保留原文件:

gzip -9 -c services > services.gz

-c 可以将原本要转成压缩文件的资料内容,将它变成文字类型从屏幕输出, 然后我们可以透过大于 (>) 这个符号,将原本应该由屏幕输出的数据,转成输出到文件而不是屏幕,所以就能够建立出压缩文件了。只是文件名也要自己写, 当然最好还是遵循 gzip 的压缩文件名规范。

bzip2, bzcat/bzmore/bzless/bzgrep

bzip2则是为了取代 gzip 并提供更佳的压缩比而来的,语法和gzip差不多: