|
|
|
@ -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
|