完成gzip (#19)

Reviewed-on: study-area-cn/study-area-cn#19
This commit is contained in:
cxykevin 2024-08-18 15:19:43 +08:00
parent 9429325196
commit 4c6b3b8687
6 changed files with 86 additions and 14 deletions

View File

@ -38,7 +38,7 @@
- [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md) - [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md)
- [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md) - [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md)
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.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与Shell Script]()
- [学习Shell]() - [学习Shell]()

View File

@ -33,10 +33,10 @@
- `/tmp` 存放一些临时文件,通常被挂载到了内存 - `/tmp` 存放一些临时文件,通常被挂载到了内存
- `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。 - `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。
- `/var` 可变动的文件(variable) - `/var` 可变动的文件(variable)
- `/var/mail` (本地邮件信箱) - `/var/mail` (本地邮件信箱)
- `/var/spool/news` (新闻组) - `/var/spool/news` (新闻组)
- `/var/run` (程序相关文件) - `/var/run` (程序相关文件)
- `/var/lock` (程序锁相關) - `/var/lock` (程序锁相關)
- `/sys` 也是一个重要的设备目录 - `/sys` 也是一个重要的设备目录
- `/home` 用户目录,相当于 `C:\Users`MacOS`/Users` - `/home` 用户目录,相当于 `C:\Users`MacOS`/Users`

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

View File

@ -126,6 +126,7 @@ tar -zxvf archive.tar.gz -C ./archive
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。 上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
### 添加文件 ### 添加文件
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。 如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
例如上文的 例如上文的
@ -160,7 +161,7 @@ tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令: tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。 1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。 2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。

View File

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