主页 实验环境 学习Linux - Study Area CN

GZip 与 XZ

上篇文章中,我们介绍了 tar 命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 tar 命令可以调用 gzipxz 进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 gzipxz 命令本身吧。

这两个命令只能压缩单个文件,而不能压缩目录。

GZip

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

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