完成gzip #19

Merged
cxykevin merged 3 commits from :main into main 2024-08-18 15:19:43 +08:00
2 changed files with 73 additions and 1 deletions
Showing only changes of commit 6df5abbab1 - Show all commits

View File

@ -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]()

View File

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