显示 tar 文件的内容
当前目录现在将包含一个名为 test.tar 的文件。
要显示 tar 文件的内容,我们可以发出以下命令:
# tar tvf test.tar drwxr-xr-x root/root 0 2018-01-04 10:01 ./ -rw-r--r-- root/root 2277 2018-01-04 09:57 ./file1 -rw-r--r-- root/root 1456 2018-01-04 09:58 ./file3 -rw-r--r-- root/root 1611 2018-01-04 09:58 ./file2
其中:
- t 目录(列表)
- v 详细(显示所有信息)
- f 文件名 (test.tar)
使用 tar 保留权限
如果要保留备份文件的权限,请在 tar 命令中使用 p 选项。
这将保存 uid、gid 以及文件的特定权限属性(读、写、执行等)。
# tar pcvf test.tar .
在提取上述 tar 文件时,如果要提取具有保留文件权限的文件,则必须再次使用 p 选项。
例如 :
# tar pxvf test.tar .
tar 命令对于捆绑多个文件和/或者目录很有用。
从某种意义上说,它类似于 zip 命令。
但是,zip 文件根据定义是压缩的; tar 文件可以压缩,但不是必须的。
使用 tar 压缩
如果我们还想为 tar 文件添加压缩,我们可以通过将 z 开关添加到命令中,在命令行上将 gzip 实用程序与 tar 结合使用。
通常,完成此操作后,我们会将 tar 文件名的后缀从 .tar 更改为 .tgz 或者 .tar.gz。
这会让看到该文件的人知道它是一个 gzip 压缩的 tar 文件。
# tar zcvf test.tgz . ./ ./file1 ./file3 ./file2 tar: .: file changed as we read it
# ls -lrt total 16 -rw-r--r-- 1 root root 2277 Jan 4 09:57 file1 -rw-r--r-- 1 root root 1611 Jan 4 09:58 file2 -rw-r--r-- 1 root root 1456 Jan 4 09:58 file3 -rw-r--r-- 1 root root 1639 Jan 4 11:27 test.tgz
其中:
- z gzip 压缩
- c 创建
- v 冗长
- f 文件名 (test.tgz)
- .当前目录
tar 命令知道另一种称为 bzip2 的压缩算法。
要使用 bzip2 而不是 gzip,请将上述命令中的 'z ' 替换为 'j ' 例如:
# tar jcvf test.bz2 .
要提取压缩文件,请包含选项“z”和“j”。
例如,
# tar xzvf test.tgz # tar xjvf test.bz2
提取完整的 tar 文件
要将 tar 文件的全部内容提取到当前目录,我们可以键入:
# tar xvf test.tar ./ ./file1 ./file3 ./file2
其中:
- x 提取文件
- v 冗长
- f 文件名 (test.tar)
从 tar 文件中提取特定文件
我们还可以从 tar 文件中提取特定文件,而不是提取整个 tar 文件。
要仅从存档中提取 file1 文件,执行以下命令:
tar xvf test.tar file1
创建 tar 文件
在接下来的示例中,使用了以下文件结构:名为 /var/tmp/test 的顶级目录,其中包含文件 file1. file2 和 file3.
# ls -lR /var/tmp/test /var/tmp/test: total 12 -rw-r--r-- 1 root root 2277 Jan 4 09:57 file1 -rw-r--r-- 1 root root 1611 Jan 4 09:58 file2 -rw-r--r-- 1 root root 1456 Jan 4 09:58 file3
- 假设我们已经在 /var/tmp/test 目录中,要为 test 目录中的所有文件创建一个 tar 文件,请发出以下命令。
# tar cvf test.tar . ./ tar: ./test.tar: file is the archive; not dumped ./file1 ./file3 ./file2
其中:c
创建(存档)v
冗长f 文件名
(我们的 tar 文件名).
当前目录
注意:另外值得一提的是,默认情况下 tar 是递归的。
这意味着它将递归备份所有文件和子目录,除非我们另外指定 n 标志(非递归)