From 6df5abbab1383e70739ab47383ac88f78b6b349a Mon Sep 17 00:00:00 2001 From: cxykevin Date: Sun, 18 Aug 2024 13:48:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90gzip=E5=92=8Cxz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SUMMARY.md | 2 +- .../file_and_path/gzip_and_xz.md | 72 +++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/learn_linux_basic/file_and_path/gzip_and_xz.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a26d16b..463f4f8 100755 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -38,7 +38,7 @@ - [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md) - [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md) - [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md) - - [gzip与xz]() + - [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md) - [备份]() - [Shell与Shell Script]() - [学习Shell]() diff --git a/src/learn_linux_basic/file_and_path/gzip_and_xz.md b/src/learn_linux_basic/file_and_path/gzip_and_xz.md new file mode 100644 index 0000000..d153a38 --- /dev/null +++ b/src/learn_linux_basic/file_and_path/gzip_and_xz.md @@ -0,0 +1,72 @@ +# GZip 与 XZ + +上篇文章中,我们介绍了 `tar` 命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 `tar` 命令可以调用 `gzip` 和 `xz` 进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 `gzip` 或 `xz` 命令本身吧。 + +> 这两个命令只能压缩单个文件,而不能压缩目录。 + +## 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` 选项可以强制保留原始文件。 + +例如,我们可以使用以下命令来压缩一个文件: + +```bash +gzip file.txt +``` + +这将会生成一个名为 `file.txt.gz` 的压缩文件,原始的 `file.txt` 文件将被删除。 + +要解压缩一个 `gzip` 压缩的文件,可以使用下面的命令: + +```bash +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` 可以使用更多的时间来提高压缩率 + +例如,我们可以使用以下命令来压缩一个文件: + +```bash +xz file.txt +``` + +这将会生成一个名为 `file.txt.xz` 的压缩文件,原始的 `file.txt` 文件将被删除。 + +要解压缩一个 `xz` 压缩的文件,可以使用下面的命令: + +```bash +xz -d file.txt.xz +``` + +--- + +> study-area-cn