经过压缩后的文件能够占用更少的磁盘文件。现在几乎所有的计算机用户都懂得使用压缩工具,尽管在大部分情况下是为了“打包”,而不是“压缩”。在linux世界里有太多的源码需要压缩,这里我们将会看到这些压缩工具的确非常有用。
gzip是目前linux下使用最广泛的压缩工具,尽管他的地位正在持续受到baip2的威胁,gzip的使用非常方便,只要简单地在gzip命令后跟上一个想要压缩的文件,作为参数就可以了
在默认情况下,gzip命令会给被压缩的文件加上一个"gz"扩展名,经过这番处理后,文件gzip linux_book_bak.tar就会变成gzip linux_book_bak.tar.gz。
“.tar.gz”可能是Linux世界中最流行的压缩文件格式。这种格式的文件首先经过tar打包程序的处理,然后使用gzip压缩的成果。
要解压缩。gz文件,可以使用gunzip命令或者带“-d”选项的gzip命令,但在解压缩后会删除原始文件。
或者
应该保证需要解压的文件有合适的扩展名。gzip(或者gunzip)支持的扩展名有.gz、Z、-gz、.z、-z、和z。
$ gzip -l gzip linux_book_bak.tar.gz
compressed uncompressed ratio uncompressed_name
21511412 27504640 24.8% gzip linux_book_bak.
可以看出,文件gzip linux_book_bak.tar在压缩前后大小分约为27MB和21MB,压缩率为21.8%。最后,gzip命令的-t选项可以用来测试压缩文件的完整性。如果文件正常,gzip命令不会给出任何显示。如果非要有一些回复,可以使用-tv选项。
$ gzip -tv linux_book_bak.tar.gz
linux_book_bak.tar.gz: OK
二、更高的压缩率:bzip2
bzip2可以提供比gzip更高的压缩率,当然,这是以压缩速度为代价的,不过,伴随着摩尔定律惊人的持续,这种速度上的劣势将会变得难以察觉以及bzip2类似的压缩算法也因此流行。
bzip2的使用方法同gzip基本一致。下面这条命令是压缩文件gzip linux_book_bak.tar,并以文件gzip linux_book_bak.tar.bz2替代它。
$ bzip2 gzip linux_book_bak.tar
解压.bz2文件可以使用bunzip2或者带-d选项的bzip2命令:
$ bunzip2 linux_book_bak.tar.bz2
或者
$ bzip2 -d linux_book_bak.tar.bz2
bzip2可以识别的压缩文件格式包括.bz2、.bz、.tbz2、.tbz和bzip2。如果使用bzip2压缩的文件不幸被改成了其他名字,那么经过解压缩的文件后面会多一个“.out”作为扩展名,同样可以使用 -tv选项检查压缩文件的完整性。
三、通用的压缩命令:zip
zip 命令为压缩命令,压缩后不覆盖源文件,可以压缩目录,一般后缀名为.zip用于压缩文件,其语法格式如下:
zip [选项] 文件名.zip /xxx/路径xxx/文件
常用参数选项如下:
-v :可视化操作,显示压缩的执行过程,默认就是可视化
-q : 静默操作,不显示指令执行过程
-r :表示递归打包包含子目录的全部内容
-d :从压缩文件内删除指定的文件
-n :n为一个数字,压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好
-e :加密压缩文件
-u :追加文件到zip压缩包中
演示示例:
zip -vr etc.zip /etc/ #压缩/etc/目录,压缩文件名为etc.zip
zip -d myfile.zip smart.txt #删除压缩文件中的指定文件
zip -e passwd.zip /etc/passwd #加密压缩,需要输入密码
zip -u passwd.zip mypasww.txt #追加mypasww.txt文件到压缩包中
四、支持rar格式
rar俨然已经取代了zip成为Windows下的标准压缩格式。尽管rar相比较zip最大的优势在于其更好的压缩效果,但Windows用户通常只是简单地将它当作打包工具。在Linux下处理rar文件可以使用RAR for Linux。只是一个命令行工具,可以从WinRAR archiver, a powerful tool to process RAR and ZIP files 上下载。
要解压缩一个文件,只要简单的地使用rar和选项X。下面这条命令式解压缩music.rar。
$ rar x music.rar ##解压缩music.rar
五、文件打包:tar
Linux中最著名的文件打包工具是tar,这个程序读取了多个文件和目录,并将其打包为一个文件。下面这条命令将shell命令连同其下的文件一同打包成文件shell.tar。和gzip不同的是,tar不会删除原来的文件。
c | 指导tar创建归文件 |
---|---|
v | 显示命令的执行过程 |
f | 指定归档文件名 |
x | 解开归档文件 |
w | 将单个文件加入(或抽出)归档文件时征求用户的意见 |
z | tar命令是自动调用gzip完成相关操作 |
j | 用于调用bzip2程序和-z用法一致 |