生命不息
折腾不止

终极tar命令教程 — 10个例子

在 Linux/Unix 平台, tar 命令式主要的归档工具,了解各种 tar 命令的选项将帮助你掌握 Liunx/Unix 平台下归档文件操作。

在这篇文章中,我们会回顾一些 tar 命令的示例,包括:如何创建 tar 压缩包(使用 gzip bzip 压缩)、释放一个单独的文件或者目录、查看 tar 归档内容、验证归档文件完整性、对比归档文件与文件系统的差异以及创建归档文件估算归档文件大小等等。

1. 使用 tar 命令创建归档文件

使用选项 cvf 创建未压缩的归档文件

下面的命令是最基础的归档创建命令:

$ tar cvf archive_name.tar dirname/

其中: * c — 创建新的档案文件。如果用户想 备份 一个目录或是一些文件,就要选择这个选项。

  • v — 详细报告 tar 处理的文件信息。如无此选项, tar 不报告文件信息。
  • f — 使用档案文件或设备,这个选项通常是必选的。

使用选项 cvzf 创建 gzip 创建的归档文件

上面的使用的 cvf 选项,不会对归档执行任何压缩操作,要对归档文件使用 gzip 压缩,可以增加 z 选项,参考下例:

$ tar cvzf archive_name.tar.gz dirname/
  • z — 用 gzip 来压缩 / 解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

: .tgz.tar.gz 扩展名 是相同。

:我个人比较习惯在创建或解压归档文件时保持 cvf (或 tvfxvf )选项在所有选项的前面,这样比较容易记忆。比如: cvf 用来创建归档, cvfz 用来创建 gzip 压缩的归档, cvfj 用来创建 bzip2 压缩的归档。

使用选项 cvjf 创建 bzip2 压缩的归档

$ tar cvfj archive_name.tar.bz2 dirname/

比较 gzip 和 bzip2 : bzip2 相对于 gzip 需要更多的时间进行压缩和解压缩工作, bzip2 压缩包 大小要小于 gzip 压缩包。

: .tbz.tar.bz2 是相同的

2. 使用 tar 命令释放归档文件

使用 xvf 选项释放 *.tar

$ tar xvf archive_name.tar
  • x — 从档案文件中释放文件。

使用 xvzf 释放 gzip 压缩的归档文件

$ tar xvfz archive_name.tar.gz

使用 xvjf 释放 bzip2 压缩的归档文件

$ tar xvfj archive_name.tar.bz2

:上面所有选项中 v 是可选的,这个 U 型安详会列出当前处理的文件

3. 使用 tar 命令列出归档内容

使用 tvf 选项列出归档内容(不释放归档)

$ tar tvf archive_name.tar

使用 tvzf 命令列出归档内容(不释放归档)

$ tar tvfz archive_name.tar.gz

使用 tvjf 命令列出归档内容(不释放归档)

$ tar tvfj archive_name.tar.bz2

4. 使用 less 命令列出归档文件内容

当归档 中文 件数量过多时,你可以将 tar 命令的输出重定向到 less 命令。不过,你也可以直接使用 less 命令来查看归档内容,可以参考: Less 的终极能力 — 使用 less 打开和查看 10 种类型的文件

5. 从 tar,tar.gz,tar.gz2 文件中释放单个文件

可以在 tar xvf 命令后指定 文件名 来释放单个文件,参考下面命令:

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

根据归档的压缩方式( bzip2 或 gzip )指定相应的 jz 选项从压缩的归档文件中释放单个文件:

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

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

6. 从 tar,tar.gz,tar.gz2 文件中释放单个目录

可以在 tar xvf 命令后指定路径名来释放单个目录(以及子目录和文件),参考下面命令:

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

要释放多个目录,可以在 tar xvf 逐个列出目录路径,用空格分隔:

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

根据归档的压缩方式( bzip2 或 gzip )指定相应的 jz 选项从压缩的归档文件中释放单个文件:

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

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

7. 使用正则表达式从 tar,tar.gz,tar.gz2 文件中释放多个文件

可以使用正则表达式按照一定的模式从归档中释放文件,比如下面命令会释放归档中所有以 .pl 为后缀的文件:

$ tar xvf archive_file.tar --wildcards '*.pl'
  • –wildcards *.pl — 匹配所有以 pl 为后缀名文件

8 使用 -r 选项增加文件或目录到归档中

可以使用下面命令向已存在的归档文件中增加新的文件:

$ tar rvf archive_name.tar newfile

新文件会被增加到 ‘archive_name.tar’ 中,增加目录页差不多:

$ tar rvf archive_name.tar newdir/

注意 :不能向已压缩的归档中增加文件或目录,如果你尝试这么多你会得到一个错误:

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

9. 使用 -W 选项验证归档

作为归档创建的一部分功能,你可以使用 -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

如果每行输出以 Verify 开头并且没有任何差异,那么文件或目录是没有问题的,否则,你需要根据提示查一下问题了。

注意 :不能对压缩的( .tar.gz, .tar.bz2 )归档进行验证。

可以比较归档和原始目录的差异,归档可以是压缩的或未压缩的,比较的结果输出和上面例子中一致,参考下例:

$ tar dfz file_name.tgz

以及:

$ tar dfj file_name.tar.bz2

10. 估算归档文件大小

下面的命令可以在执行归档前估算归档文件大小( kb ):

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

同样也可以估算压缩后文件大小( kb ):

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

$ tar -cjf - /directory/to/archive/ | wc -c
428
赞(0)
未经允许不得转载:91云(91yun.co) » 终极tar命令教程 — 10个例子

留言 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址