上篇文章中,我们介绍了 tar
命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 tar
命令可以调用 gzip
和 xz
进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 gzip
或 xz
命令本身吧。
这两个命令只能压缩单个文件,而不能压缩目录。
gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。gzip是一种在Linux系统中常见的命令行压缩工具。它使用DEFLATE压缩算法来减小文件的大小,使文件更易于存储和传输。
事实上,在许多软件中,包括在你浏览互联网的过程中,gzip已经被广泛使用。说不定,你现在正在阅读的网页就是gzip压缩过的。
使用 gzip
命令压缩的文件的后缀和前面提到的 .tar.gz
一样,都是 .gz
结尾的压缩文件。
下面是 gzip
命令的一些常用选项:
-c
:将压缩后的数据输出到终端(但是你看不懂的乱码),而不是覆盖原始文件。通常配合后面会讲到的 >
与 |
使用。-r
:递归压缩目录,包括子目录中的文件。注意:这里的递归是对每一个文件单独压缩,而不是对整个目录压缩成一个文件。-v
:显示压缩或解压缩的详细信息。-d
:解压缩文件。gunzip
命令等同于 gzip -d
。-f
:强制压缩或解压缩,会覆盖原有的文件。-k
:不删除原始文件。-1
到 -9
:表示压缩等级,-1
表示最低压缩等级,速度快,-9
表示最高压缩等级,压缩率高。默认是 -6
。
gzip
命令默认会删除原始文件,所以使用-f
选项可以强制保留原始文件。
例如,我们可以使用以下命令来压缩一个文件:
gzip file.txt
这将会生成一个名为 file.txt.gz
的压缩文件,原始的 file.txt
文件将被删除。
要解压缩一个 gzip
压缩的文件,可以使用下面的命令:
gzip -d file.txt.gz
之前学习的
tar
命令的-z
选项就等价于先用 tar 命令打包,再执行一遍 gzip 命令。
xz是一种压缩文件格式,采用LZMA SDK压缩,目标文件较gzip压缩文件(.gz或)小30%,较.bz2小15%。
前段时间 XZ 命令被爆出存在后门,差一点就进入了正式的发行版,这次漏洞如果成功会危害到数以万计的 Linux 设备,但成功被开源社区的人发现
(还是因为SSH程序启动慢了0.5秒),这也侧面体现出了XZ应用的广泛与 Linux 社区支持的安全性。
使用 xz
命令压缩的文件的后缀和前面提到的 .tar.xz
一样,都是 .xz
结尾的压缩文件。
xz
的基本选项和 gzip
基本一致,但是提供了以下几个提高性能的额外选项:
-T <线程数>
可以使用多线程进行压缩,提高压缩速度。-e
可以使用更多的时间来提高压缩率例如,我们可以使用以下命令来压缩一个文件:
xz file.txt
这将会生成一个名为 file.txt.xz
的压缩文件,原始的 file.txt
文件将被删除。
要解压缩一个 xz
压缩的文件,可以使用下面的命令:
xz -d file.txt.xz
study-area-cn