<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可以解开 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则是为了取代 gzip 并提供更佳的压缩比而来的,语法和gzip差不多: