tar 知识点速查

这是 tar 常用命令的快速参考备忘单。

入门

介绍

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

语法

tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-C <目的目录>][-f <备份文件>][--delete][--totals][文件或目录...]

以前 unix 系统管理员使用 tar 执行磁带机备份。tar 命令用于获取文件和目录的集合,并生成高度压缩的归档文件,在Linux中通常称为 tarballtargzipbzip

选项

:--
-c建立新的备份文件
-C切换到指定的目录
-d对比备份文件内和文件系统上的文件的差异
-x解压缩归档文件
-v显示指令执行过程
-f指定归档文件的文件名
-t查看归档文件内容
-j通过 bzip2 指令处理备份文件
-z通过 gzip 指令处理备份文件
-r向现有存档文件追加或更新文件或目录
-W验证归档文件
--totals备份文件建立后,列出文件大小
--delete从备份文件中删除指定的文件
--wildcards在 unix tar 命令中指定匹配模式

创建一个 tar 格式的压缩文件

在当前工作目录的 /home/cyberpunk/testdir 目录下创建一个名为 archive.tartar 归档文件:

tar -cvf archive.tar /home/cyberpunk/testdir/

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.sh
/home/cyberpunk/testdir/file3.tar

本例中使用的选项有:

:--
-c建立新的备份文件
-v显示指令执行过程
-f指定归档文件的文件名

创建压缩后的 tar.gz 存档文件

要创建一个压缩的 gzip 归档文件,我们需要使用选项 z

tar cvzf compressedArchive.tar.gz /home/cyberpunk/testdir

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.jpg
/home/cyberpunk/testdir/file3.png

本例中使用的选项有:

:--
-c建立新的备份文件
-v显示指令执行过程
-f指定归档文件的文件名
-z通过 gzip 指令处理备份文件

生成压缩率更高的 tar.bz2 文件

tarbz2 压缩,可以创建比 gzip 文件小的归档。Bz2 模式执行归档压缩和解压所需的时间比 gzip 模式多。通常,这个时间差可以忽略不计,但如果文件非常打,或者是文件数量非常多,那么时间差就会非常大。

tar cvfj Archive.tar.bz2 /home/cyberpunk/testdir

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.txt
/home/cyberpunk/testdir/file3.txt

本例中使用的选项有:

:--
-c建立新的备份文件
-v显示指令执行过程
-f指定归档文件的文件名
-j通过 bzip2 指令处理备份文件

解压缩 tar 文件

要解压缩(提取)一个tar文件,将 x (提取)选项传递给该命令 使用不带 -C 选项的命令将在当前工作目录中提取存档。-C 选项告诉命令在哪里提取存档文件。

tar -xvf Archive.tar -C /home/cyberpunk/testdir/

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.txt
/home/cyberpunk/testdir/file3.txt

本例中使用的选项有:

:--
-x解压缩归档文件
-v显示指令执行过程
-f指定归档文件的文件名

解压缩 tar.gz 文件

小知识:使用 tar 命令创建的所有归档文件,都可以以相同的方式提取。

tar -xvf Archive.tar.gz

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.txt
/home/cyberpunk/testdir/file3.txt

本例中使用的选项有:

:--
-x解压缩归档文件
-v显示指令执行过程
-f指定归档文件的文件名

解压缩 tar.bz2 文件

小知识:使用 tar 命令创建的所有归档文件,都可以以相同的方式提取。

tar -xvf Archive.tar.bz2

/home/cyberpunk/testdir/
/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.txt
/home/cyberpunk/testdir/file3.txt

本例中使用的选项有:

:--
-x解压缩归档文件
-v显示指令执行过程
-f指定归档文件的文件名

列出归档内容

使用 t 选项列出 tar 归档文件的内容:

# tar -tvf uploadprogress.tar

-rwxr--r-- root/root   1111 2014-10-19 12:33:42 file1.txt
-rwxr--r-- root/root   1111 2014-10-19 12:33:42 file2.txt
-rwxr--r-- root/root   1111 2014-10-19 12:33:42 file3.txt
-rwxr--r-- root/root   1111 2014-10-19 12:33:42 file4.txt

本例中使用的选项有:

:--
-t查看归档文件内容
-v显示指令执行过程
-f指定归档文件的文件名

从 tar 归档文件中提取单个文件

tar --extract --file=archive.tar file1.txt

file1.txt

从 tar 归档文件中提取多个文件

tar -xvf Archive.tar "file 1" "file 2"

使用通配符提取文件组

# tar -xvf Archive.tar --wildcards *.txt'

/home/cyberpunk/testdir/file1.txt
/home/cyberpunk/testdir/file2.txt
/home/cyberpunk/testdir/file3.txt

添加文件或目录到 tar 存档中

要向现有的 tar 文件中添加文件或目录,可以使用 r 选项。例如,我们将 xyz.txt 文件和 php 目录添加到现有的 tecmint-14-09-12.tar 归档文件中。

# tar -rvf Archive.tar xyz.txt  #add file
or
# tar -rvf Archive.tar php      # add directory