完成gzip (#19)

This commit is contained in:
cxykevin 2024-08-18 15:19:43 +08:00
parent d6dbcfa8f8
commit a965413fc7
5 changed files with 85 additions and 13 deletions

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

View File

@ -63,7 +63,7 @@ vboxadd:x:979:1::/var/run/vboxadd:/bin/false
你可能会发现有的用户的登录Shell是`/bin/nologin`或`/bin/false`,这代表这些用户不能登录。
> 你可以在终端里面执行`nologin`,会发现他会提示“该用户无法登录”,而`false`只是简单地返回一个错误返回值。
>
> 有关Shell的知识我们在后面会系统介绍简单来说Shell就是一个让用户交互来执行操作的程序。
### root用户
@ -249,16 +249,16 @@ drwxrwxr-x 3 hmtsai wheel 4096 7月26日 18:33 foo1
八进制模式主要用于快速修改模式。比如我想让一个文件的模式变成rwxrwxrwx只需要`chmod 777 file`,而不是`chmod ugo+rwx file`。
> 为什么是421这三个数字呢这是因为他们的组合能够不重不信你试试看。
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。这个主要在懒得看模式的时候用(划掉)。因为比较简单,所以这里不再赘述。
>
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。~~这个主要在懒得看模式的时候用(划掉)~~。因为比较简单,所以这里不再赘述。
#### 参数
`chmod`的参数与`chown`比较类似,于是在此不再赘述,详情可以通过`chmod --help`了解。
> 几乎所有命令都有一个`--help`参数,可以通过这个参数大概了解这个命令的用法。
# 课后任务
## 课后任务
由于这篇的内容比较复杂,于是我们建议您完成以下任务进行练习:

View File

@ -126,6 +126,7 @@ tar -zxvf archive.tar.gz -C ./archive
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
### 添加文件
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
例如上文的

View File

@ -5,7 +5,7 @@
其实Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。
> 注意以下操作若无特殊说明输入命令均在终端Terminal下操作可以按下 C-M-T 呼出。
---
> 本文中,快捷键使用以下格式表示:
> `Ctrl`键使用`^`或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。
> 它们的排列顺序是这样的:`C-M-S-<Other Key>`
@ -132,7 +132,6 @@ rm -r <你想删除的文件夹>
> 如果你真的想尝试,那么请一定在虚拟机下!搞坏系统作者可不负责!
### `nano`简单的文档编辑器
![Nano 的界面](./assets/2.5.1.png)