forked from study-area-cn/study-area-cn.old
完成tar (#17)
Reviewed-on: study-area-cn/study-area-cn#17 Co-authored-by: cxykevin <cxykevin@yeah.net> Co-committed-by: cxykevin <cxykevin@yeah.net>
This commit is contained in:
parent
8908dd550a
commit
37cfe1b31e
|
@ -37,7 +37,7 @@
|
||||||
- [文件与路径](./learn_linux_basic/file_and_path/file_and_path.md)
|
- [文件与路径](./learn_linux_basic/file_and_path/file_and_path.md)
|
||||||
- [文件权限管理](./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打包软件]()
|
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md)
|
||||||
- [gzip与xz]()
|
- [gzip与xz]()
|
||||||
- [备份]()
|
- [备份]()
|
||||||
- [Shell与Shell Script]()
|
- [Shell与Shell Script]()
|
||||||
|
|
|
@ -265,3 +265,7 @@ drwxrwxr-x 3 hmtsai wheel 4096 7月26日 18:33 foo1
|
||||||
- 将`foo1`文件夹的权限设置为`drwxrwxrwx`,并将完整日志打印到屏幕上。
|
- 将`foo1`文件夹的权限设置为`drwxrwxrwx`,并将完整日志打印到屏幕上。
|
||||||
- 将`test_chown`目录下的所有文件的权限设置为`755`,并且解释`755`在这里的含义,然后给出功能相同的使用字符模式的命令。
|
- 将`test_chown`目录下的所有文件的权限设置为`755`,并且解释`755`在这里的含义,然后给出功能相同的使用字符模式的命令。
|
||||||
- 递归删除`foo1`文件夹,并且打印出`rm`命令每一步的操作。(可以参考`rm`命令的手册或者`rm --help`命令的输出)
|
- 递归删除`foo1`文件夹,并且打印出`rm`命令每一步的操作。(可以参考`rm`命令的手册或者`rm --help`命令的输出)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> study-area-cn
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
# `tar` 打包软件
|
||||||
|
|
||||||
|
在使用Linux的过程中,你可能会看见各种各样的压缩包文件,比如`tar.gz`(最常见的 tar 压缩包格式)、`tar.bz2`、`tar.xz`、`tar`等等。这些文件都可以使用`tar`命令打包。
|
||||||
|
|
||||||
|
> 在linux上也有些常见的图形化压缩包管理器,比如 `Ark`,但是它们远不及命令行工具的快速和稳定性。
|
||||||
|
|
||||||
|
tar压缩包都有一个显著的特征,文件名中都带有一个 `.tar`(tgz 等部分格式除外),但是后面的 `.gz` 等等又是什么呢?其实,tar 本身并不是一个压缩格式,它只是简单的把所有文件和文件夹打包到一起,而后面的 `.gz`、`.bz2`、`.xz` 等等才是压缩的格式。
|
||||||
|
|
||||||
|
> 关于其它格式的压缩包,比如`zip`、`rar`等,可以使用其它命令,比如`unzip`、`unrar`等。
|
||||||
|
|
||||||
|
绝大部分的linux发行版都预置了这个命令,你通常无需格外安装,直接使用便可。
|
||||||
|
|
||||||
|
## `tar` 命令
|
||||||
|
|
||||||
|
`tar`命令用于打包文件和目录,可以将多个文件和目录打包成一个文件,也可以将一个打包文件解压成多个文件和目录。
|
||||||
|
|
||||||
|
`tar`命令的基本语法如下:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar [选项] [文件或目录]
|
||||||
|
```
|
||||||
|
|
||||||
|
下面是常见的选项:
|
||||||
|
|
||||||
|
- `-c`:创建新的压缩文件。
|
||||||
|
- `-x`:解压文件。
|
||||||
|
- `-t`:列出压缩文件中的所有文件。
|
||||||
|
- `-z`:使用gzip压缩或解压 (`.tar.gz` 格式)。
|
||||||
|
- `-j`:使用bzip2压缩或解压 (`.tar.bz2` 格式)。
|
||||||
|
- `-v`:显示操作的详细信息。
|
||||||
|
- `-f`:指定压缩包的文件名。
|
||||||
|
- `-C`:指定解压目录。
|
||||||
|
|
||||||
|
上面的内容看不懂也没关系,下面会一一介绍用法。
|
||||||
|
|
||||||
|
## 常见用法
|
||||||
|
|
||||||
|
### 打包文件为 .tar.gz
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录打包成一个名为 `archive.tar.gz` 的压缩包。
|
||||||
|
|
||||||
|
> 在 tar 中,是可以把多个 `-` 选项连用的,例如 `-z` 和 `-c` 可以写成 `-zc`(顺序无所谓),但是需要保证像 `-f` 这样带有参数的选项放在最后。除了 tar 命令,很多linux的基本命令都可以这么用,包括我们之前学习的 cp, ls 等命令。
|
||||||
|
|
||||||
|
### 解压 .tar.gz 文件
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -zxvf archive.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
|
||||||
|
|
||||||
|
> 这两个用法应该和是我们平时见得最多的用法了。熟练掌握这几个用法,你就可以安装绝大部分的压缩包形式的linux软件了。
|
||||||
|
|
||||||
|
## 完整用法
|
||||||
|
|
||||||
|
接下来,我们来一起看看 tar 都有什么魔力吧。
|
||||||
|
|
||||||
|
> 下面会有一个常见的参数 `-v`,表示显示操作的详细信息。它会列出操作的所有文件。如果不加上这个参数,我们就看不到任何输出。当然,你也可以省略。
|
||||||
|
|
||||||
|
首先,我们进行压缩包操作,都要有个压缩包吧,所以下面的所有命令,都要加入 `-f 你的压缩包名字` 这个选项指定操作的压缩包文件。
|
||||||
|
|
||||||
|
### 压缩格式
|
||||||
|
|
||||||
|
我们前面提到了,tar只是个打包的格式,并不能压缩。但是,tar可以调用其它的压缩工具,比如gzip、bzip2、xz等,来对打包的文件进行压缩。
|
||||||
|
|
||||||
|
下面是一些常用的参数:
|
||||||
|
|
||||||
|
- `-z`:使用gzip压缩或解压 (`.tar.gz` 格式)。
|
||||||
|
- `-j`:使用bzip2压缩或解压 (`.tar.bz2` 格式)。
|
||||||
|
- `-J`:使用xz压缩或解压 (`.tar.xz` 格式)。
|
||||||
|
|
||||||
|
> 若列出文件,可以省略压缩格式,后面会讲到。
|
||||||
|
|
||||||
|
### 创建压缩包
|
||||||
|
|
||||||
|
要创建压缩包,我们可以使用 `-c` 选项。
|
||||||
|
|
||||||
|
例如上文的
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||||
|
```
|
||||||
|
|
||||||
|
就是创建一个名为 `archive.tar.gz` 的压缩包,使用 gzip 压缩格式。
|
||||||
|
|
||||||
|
### 列出压缩包中的文件
|
||||||
|
|
||||||
|
有了压缩包,我们该怎么验证,或者别人发来了一个压缩文件,我们怎么查看里面的内容呢?
|
||||||
|
|
||||||
|
我们可以使用 `-t` 选项。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -ztvf archive.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会列出 `archive.tar.gz` 压缩包中的所有文件。
|
||||||
|
|
||||||
|
### 解压压缩包
|
||||||
|
|
||||||
|
解压压缩包,我们可以使用 `-x` 选项。
|
||||||
|
|
||||||
|
例如上文的
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -zxvf archive.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
|
||||||
|
|
||||||
|
> 值得注意的是,这个操作不会新建一个文件夹。所以在解压之前,建议先看一看压缩包内是否有一层文件夹。尤其是当前目录文件比较多时,容易把文件解压到错误的位置。
|
||||||
|
|
||||||
|
### 指定解压目录
|
||||||
|
|
||||||
|
如果我们需要改变解压的位置,我们可以使用 `-C` 选项,例如解压到新建的文件夹。
|
||||||
|
|
||||||
|
例如上文的
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -zxvf archive.tar.gz -C ./archive
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
|
||||||
|
|
||||||
|
### 添加文件
|
||||||
|
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
|
||||||
|
|
||||||
|
例如上文的
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -rvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录添加到 `archive.tar.gz` 压缩包中。
|
||||||
|
|
||||||
|
### 删除文件
|
||||||
|
|
||||||
|
如果我们需要从压缩包中删除文件,我们可以使用 `--delete` 选项。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -vf archive.tar.gz --delete file_or_dir
|
||||||
|
```
|
||||||
|
|
||||||
|
上面的命令会从 `archive.tar.gz` 压缩包中删除 `file_or_dir`。
|
||||||
|
|
||||||
|
### 更新文件
|
||||||
|
|
||||||
|
如果我们需要更新压缩包中的文件,我们可以使用 `-u` 选项。这个选项类似于 `-r`,只不过是替换。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||||
|
```
|
||||||
|
|
||||||
|
> tar 的用法很多,但是常见的用法也就那么几种。多看,多用,你很快就能掌握。
|
||||||
|
|
||||||
|
## 课后作业
|
||||||
|
|
||||||
|
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
|
||||||
|
|
||||||
|
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
|
||||||
|
|
||||||
|
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。
|
||||||
|
|
||||||
|
3. 把这个文件发给小伙伴,当然也可以发到论坛里。
|
||||||
|
|
||||||
|
4. 使用 tar 命令查看并且解压这个压缩包里的文件
|
||||||
|
|
||||||
|
5. 使用 cat 命令,看看文件里写的是什么
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> study-area-cn
|
Loading…
Reference in New Issue