tar命令用于将文件和目录打包并压缩为一个tar存档文件。它也可以解压文件。

显示压缩文件中包含文件与目录,还可以将其他文件添加到现有tar压缩文件中,以及各种其他类型的操作。

tar支持种类繁多的压缩程序如gzipbzip2lziplzmalzopxzcompress

在创建压缩文件时,通常会使用压缩程序的名称作为后缀添加到压缩文件名的末尾。

这是一种公认​​的惯例,例如创建压缩文件时使用gzip压缩程序,压缩文件的名称应该带有.gz后缀。

tar命令最初设计用于创建存档并在磁带存储文件,这就是为什么它的名字叫Tape ARchive的原因。

有两种版本的tar命令,BSD tar和GNU tar,它们之间存在一些功能差异。大多数Linux系统都默认安装GNU tar。

在本教程中,将说明如何使用tar 命令创建或者解压tar文件。还包括tar命令语法选项。

tar 命令

在说明如何使用tar命令之前,先回顾基本语法。tar命令的语法形式是tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]

OPERATION也就是操作,tar命令的操作包括,-c/--create创建tar存档文件。

-x/--extract解压存档文件或在存档文件中提取一个或多个文件与目录。-t/--list查看tar存档包含的文件与目录。

OPTIONS选项,tar命令的常用选项包括,--verbose/-v打印tar命令正在处理的文件的信息。

--file=archive=name/-f archive-name指定压缩文件的名称。ARCHIVE_NAME要解压或者压缩的tar存档名称。

FILE_NAME(s)是要提取的一个或者多个文件与目录,多个文件与目录使用空格分隔。如果未提供,则解压整个存档。

在运行tar命令时,可以使用tar操作OPERATION和选项OPERATION的长短形式。长形式更易读,而短形式更方便。

长形式选项以双短划线--开头。短形式选项以单个短划线-为开头,你也可以省略-

tar 命令创建压缩文件

在创建存档时,您可以打包一个或多个文件与目录。要使用tar命令创建存档文件,可以使用tar命令的-c选项。

默认情况下,tar命令递归目录的所有文件并创建存档。如果你指定--no-recursion选项,tar命令将不会递归目录的所有文件。

例如命令tar -cf archive.tar file1 file2 file3创建archive.tar存档文件并打包文件file1file2file3

你也可以使用使用长形式选项的等效命令tar --create --file=archive.tar file1 file2 file3创建archive.tar存档文件。

tar -cf archive.tar file1 file2 file3
tar --create --file=archive.tar file1 file2 file3

如你需要查看tar命令打包过程,可以使用tar命令-v选项。-v选项用于打印正在处理的文件/目录。

如果你想保留tar命令创建存档整个过程,可以将-v选项的标准输出重定向到文件中。

例如命令tar -cfv backup.tar /home/username > tar.logtar命令的日志将写入到当前目录的tar.log文件。

tar -cfv backup.tar /home/username > tar.log

tar 命令添加文件目录

要将文件或目录添加到现有tar压缩文件,请使用tar命令的--append/-r选项。

-r选项允许你指定一个或者多个文件与目录,如果要指定多个文件与目录请使用空格进行分隔。

例如命令tar -rvf archive.tar newfile添加文件newfile到tar文件archive.tar

tar -rvf archive.tar newfile

tar 命令删除文件目录

要从tar压缩文件删除文件与目录,请使用tar命令的--delete选项。

--delete选项允许你指定一个或者多个文件与目录,如果要指定多个文件与目录请使用空格进行分隔。

在删除目录文件与目录时,必须提供文件目录在压缩内文件的内的路径,你可以使用tar命令的--list/-t选项查看文件路径,运行命令tar tf archive.tar

例如命令tar --delete -f archive.tar file1将在archive.tar存档文件删除文件file1

tar tf archive.tar
tar --delete -f archive.tar file1

tar 命令解压tar文件

要解压tar文件,请使用tar命令的--extract或者-x选项,并在-f选项后指定tar文件名称。

命令tar -xf archive.tar将会解压archive.tar文件到当前目录。-f选项用于指定文件,-x选项表示解压。

tar -xf archive.tar

tar 命令查看存档文件目录

要查看tar存档文件与目录,请使用tar命令的--list选项或者短形式的-t选项。

除了查看文件名称,你还可以添加tar命令的--verbose/-v选项打印更详细的信息。

这些文件的信息包括所有者,文件大小,时间戳,权限等。命令tar -tf archive.tar将列出archive.tar存档的文件与目录。

tar -tf archive.tar
tar -tvf archive.tar
-rw-r--r-- myfreax/users       0 2018-09-08 01:19 file1
-rw-r--r-- myfreax/users       0 2018-09-08 01:19 file2
-rw-r--r-- myfreax/users       0 2018-09-08 01:19 file3

tar 命令指定解压目录

要获得更详细的输出,请使用tar命令的-v选项。这将会在终端打印正在解压的文件名称。

tar默认解压tar文件到当前工作目录,要解压到指定的目录,请使用--directory或者-C选项。

命令tar -xf archive.tar -C /home/myfreax/filesarchive.tar解压到/home/myfreax/files目录。

tar -xvf archive.tar
tar -xf archive.tar -C /home/myfreax/files

tar 命令提取指定文件

要从tar文件中提取指定文件,请在tar命令的最后指定要提取文件名称,多个文件使用空格作为分隔符。

提取文件时,必须提供文件在压缩内文件的内的路径,你可以使用tar命令的--list/-t选项查看文件路径,运行命令tar tf test.tar.xz

除了在tar压缩文件提取文件以外,你还可以提取一个或多个目录。与提取文件一样你需要指定目录在压缩内文件的内的路径。

如果您尝试提取压缩文件内不存在的文件,tar命令将会打印错误消息tar: README: Not found in archive。tar: Exiting with failure status due to previous errors。

例如命令tar -xf archive.tar test/dir/ test/file1将会提取文件test/file1 和目录test/dir/到当前目录。

test/
test/file1
test/dir/
test/dir/file2
archive.tar.xz
tar -tf archive.tar.xz

tar -xf archive.tar.xz test/file1
tar -xf archive.tar.xz test/dir/ test/file1

tar命令的--wildcards选项允许您基于通配符模式或者正则表达式从tar文件中提取多个文件。

在使用通配符模式或者正则表达匹配多个文件时,必须使用单引号对模式进行包裹,避免shell解释模式中的特殊符号。

例如命令tar -xf archive.tar --wildcards '*.png'将会提取以.png结尾的文件。

tar -xf archive.tar --wildcards '*.png'

tar 命令创建tar.xz文件

压缩tar文件的另一个流行的程序是xz。使用xz程序压缩tar文件时,压缩文件名称应以xz结尾。

要创建使用xz压缩程序的创建tar.xz文件。请使用tar命令的-J选项。该选项将会使用xz程序压缩tar存档文件。

例如命令tar cJfv archive.tar.xz file1 file2将会打包文件file1file2到压缩文件archive.tar.xz

tar cJfv archive.tar.xz file1 file2

tar 命令创建tar.gz文件

gzip是压缩最流行的压缩程序之一。使用gzip程序压缩tar文件时,压缩文件名称应以tar.gz或者以tgz结尾。

要创建使用gzip压缩程序的创建tar.gz文件。请使用tar命令的-z选项。该选项将会使用gzip程序压缩tar存档文件。

例如命令tar -czf archive.tar.gz file1 file2将会打包文件file1file2到压缩文件archive.tar.gz

tar -czf archive.tar.gz file1 file2

tar 命令创建tar.bz2文件

压缩tar文件的另一个流行的程序是bzip2。使用bzip2程序压缩tar文件时,压缩文件名称应以bz2结尾。

要创建使用bzip2压缩程序的创建tar.bz2文件。请使用tar命令的-j选项。该选项将会使用bzip2程序压缩tar存档文件。

例如命令tar -cjf archive.tar.bz2 file1 file2将会打包文件file1file2到压缩文件archive.tar.gz

tar -cjf archive.tar.bz2 file1 file2

tar 命令解压tar.xz文件

要解压tar.xz文件,请tar命令的使用--extract或者-x选项,并在-f选项后指定tar.xz文件文件名称。

tar自动检测压缩文件使用的算法并自动解压文件。可以使用tar -xf命令来解压使用其他压缩算法的tar存档文件。例如.tar.gz文件和.tar.bz文件。

命令tar -xf archive.tar.xz命令将会解压archive.tar.xz文件到当前目录。-f选项用于指定文件,-x选项表示解压。

tar -xf archive.tar.xz

tar 命令解压tar.gz文件

要解压tar.gz文件,请tar命令的使用--extract或者-x选项,并在-f选项后指定tar.xz文件文件名称。

tar自动检测压缩文件使用的算法并自动解压文件。可以使用tar -xf命令来解压使用其他压缩算法的tar存档文件。例如.tar.xz文件和.tar.bz文件。

命令tar -xf archive.tar.gz命令将会解压archive.tar.gz文件到当前目录。-f选项用于指定文件,-x选项表示解压。

tar -xf archive.tar.gz

tar 命令解压tar.bz2文件

要解压tar.bz2文件,请tar命令的使用--extract或者-x选项,并在-f选项后指定tar.bz2文件文件名称。

tar自动检测压缩文件使用的算法并自动解压文件。可以使用tar -xf命令来解压使用其他压缩算法的tar存档文件。例如.tar.gz文件和.tar.xz文件。

命令tar -xf archive.tar.bz2命令将会解压archive.tar.bz2文件到当前目录。-f选项用于指定文件,-x选项表示解压。

tar -xf archive.tar.bz2

结论

到目前为止,您应该很好地了解如何创建和提取/解压缩tar存档文件。想要查看tar命令的更多信息,请参阅Gnu tar文档页面,如有疑问请在下方评论留言。