Tar 命令教程的10 个实际示例

Tiamo_T 发表于 2022/02/08 17:36:57 2022/02/08
【摘要】 在 Unix 平台上,tar 命令是主要的归档实用程序。了解各种 tar 命令选项将帮助您掌握归档文件操作。

在 Unix 平台上,tar 命令是主要的归档实用程序。了解各种 tar 命令选项将帮助您掌握归档文件操作。

在本文中,让我们了解各种tar 示例,包括如何创建 tar 存档(使用 gzip 和 bzip 压缩)、提取单个文件或目录、查看 tar 存档内容、验证 tar 存档的完整性、找出 tar 存档之间的区别和文件系统,在创建之前估计 tar 档案的大小等,

1. 使用 tar 命令创建存档

使用选项 cvf 创建未压缩的 tar 存档

这是创建 tar 存档的基本命令。

$ tar cvf archive_name.tar dirname/

在上面的命令中:

  • c – 创建一个新档案
  • v – 详细列出已处理的文件。
  • f – 以下是存档文件名

使用选项 cvzf 创建 tar gzipped 存档

上面的 tar cvf 选项,不提供任何压缩。要对 tar 存档使用 gzip 压缩,请使用 z 选项,如下所示。

$ tar cvzf archive_name.tar.gz dirname/
  • z – 通过 gzip 过滤存档

注意: .tgz 与 .tar.gz 相同

注意:我喜欢在所有存档创建(或查看或提取)时保持“cvf”(或 tvf 或 xvf)选项不变,并在最后添加其他选项,这样更容易记住。ie cvf 用于创建压缩包,cvfz 用于压缩gzip 压缩包创建,cvfj 用于压缩bzip2 压缩包创建等,要使此方法正常工作,请不要在选项前面给出-。


使用选项 cvjf 创建 bzipped tar 存档

创建一个 bzip2 tar 存档,如下所示:

$ tar cvfj archive_name.tar.bz2 dirname/
  • j – 通过 bzip2 过滤存档

gzip vs bzip2:bzip2 比 gzip 需要更多的时间来压缩和解压。bzip2 存档大小小于 gzip。

注意: .tbz 和 .tb2 与 .tar.bz2 相同

2. 使用 tar 命令提取(解压缩)存档

使用选项 xvf 提取 *.tar 文件

使用选项 x 提取 tar 文件,如下所示:

$ tar xvf archive_name.tar
  • x - 从存档中提取文件

使用选项 xvzf 提取 gzipped tar 存档 ( *.tar.gz )

使用选项 z 解压缩 gzip tar 存档。

$ tar xvfz archive_name.tar.gz

使用选项 xvjf 提取 bzipped tar 存档 ( *.tar.bz2 )

使用选项 j 解压缩 bzip2 tar 存档。

$ tar xvfj archive_name.tar.bz2

注意:在上述所有命令中,v 是可选的,它列出了正在处理的文件。

3. 使用 tar 命令列出档案

使用选项 tvf 无需解压即可查看 tar 存档文件内容

您可以在解压前查看 *.tar 文件内容,如下所示。

$ tar tvf archive_name.tar

查看 *.tar.gz 文件内容而不使用选项 tvzf 提取

您可以在解压前查看 *.tar.gz 文件内容,如下所示。

$ tar tvfz archive_name.tar.gz

查看 *.tar.bz2 文件内容而不使用选项 tvjf 提取

您可以在解压前查看 *.tar.bz2 文件内容,如下所示。

$ tar tvfj archive_name.tar.bz2

4.用less命令列出tar文件内容

当档案中的文件数量更多时,您可以将 tar 的输出通过管道传输到更少。但是,您也可以直接使用 less 命令来查看 tar 归档输出

5.从tar、tar.gz、tar.bz2文件中提取单个文件

要从 tar 存档中提取特定文件,请在 tar xvf 命令末尾指定文件名,如下所示。以下命令仅从大型 tar 文件中提取特定文件。

$ tar xvf archive_file.tar /path/to/file

根据压缩方式gzip或bzip2分别使用相关选项z或j如下图。

$ tar xvfz archive_file.tar.gz /path/to/file

$ tar xvfj archive_file.tar.bz2 /path/to/file

6.从tar、tar.gz、tar.bz2文件中提取单个目录

要从 tar 存档中提取单个目录(及其子目录和文件),请在 tar xvf 命令末尾指定目录名称,如下所示。以下内容仅从大型 tar 文件中提取特定目录。

$ tar xvf archive_file.tar /path/to/dir/

要从 tar 存档中提取多个目录,请在 tar xvf 命令的末尾指定这些单独的目录名称,如下所示。

$ tar xvf archive_file.tar /path/to/dir1/ /path/to/dir2/

根据压缩方式gzip或bzip2分别使用相关选项z或j如下图。

$ tar xvfz archive_file.tar.gz /path/to/dir/

$ tar xvfj archive_file.tar.bz2 /path/to/dir/

7. 使用正则表达式从 tar、tar.gz、tar.bz2 档案中提取文件组

您可以指定一个正则表达式,以提取与指定模式匹配的文件。例如,以下 tar 命令提取所有扩展名为 pl 的文件。

$ tar xvf archive_file.tar --wildcards '*.pl'

选项说明:

  • –wildcards *.pl – 带有 pl 扩展名的文件

8. 使用选项 -r 将文件或目录添加到现有存档

您可以将其他文件添加到现有的 tar 存档,如下所示。例如,要将文件附加到 *.tar 文件,请执行以下操作:

$ tar rvf archive_name.tar newfile

这个新文件将被添加到现有的archive_name.tar。在tar中添加目录也是类似的,

$ tar rvf archive_name.tar newdir/

注意:您不能将文件或目录添加到压缩存档中。如果您尝试这样做,您将收到“tar:无法更新压缩档案”错误,如下所示。

$ tar rvfz archive_name.tgz newfile
tar: Cannot update compressed archives
Try `tar --help' or `tar --usage' for more information.

9. 使用选项 -W 验证 tar 中可用的文件

作为创建 tar 文件的一部分,您可以验证使用选项 W 创建的存档文件,如下所示。

$ tar cvfW file_name.tar dir/

如果您计划从存档文件或文件系统中删除目录/文件,您可能需要在执行此操作之前验证存档文件,如下所示。

$ tar tvfW file_name.tar
Verify 1/file1
1/file1: Mod time differs
1/file1: Size differs
Verify 1/file2
Verify 1/file3

如果输出行以验证开头,并且没有不同的行,则文件/目录正常。如果没有,您应该调查该问题。

注意:对于压缩存档文件 ( *.tar.gz, *.tar.bz2 ),您无法进行验证。

即使是压缩存档,也可以找到存档和文件系统之间的差异。它还显示与上面相同的输出,但不包括带有验证的行。

查找 gzip 归档文件和文件系统之间的区别

$ tar dfz file_name.tgz

查找 bzip2 归档文件和文件系统之间的区别

$ tar dfj file_name.tar.bz2

10. 估计 tar 存档大小

以下命令在您创建 tar 文件之前估计 tar 文件大小(以 KB 为单位)。

$ tar -cf - /directory/to/archive/ | wc -c
20480

以下命令会在您创建 tar.gz、tar.bz2 文件之前估计压缩的 tar 文件大小(以 KB 为单位)。

$ tar -czf - /directory/to/archive/ | wc -c
508

$ tar -cjf - /directory/to/archive/ | wc -c
428
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。