如何使用tar命令创建/提取tar文件
tar
命令用于将文件和目录打包并压缩为一个tar
存档文件。它也可以提取tar存档/压缩包,显示存档/压缩包中包含的文件和目录的列表,将其他文件添加到现有tar存档文件中,以及各种其他类型的操作。
tar
支持种类繁多的压缩程序如gzip
,bzip2
,lzip
,lzma
,lzop
,xz
和compress
。在创建压缩tar
存档时,通常会使用压缩程序的名称作为后缀追加到tar存档文件名的末尾。这是一种公认的惯例,例如创建tar存档时使用了gzip压缩程序,则应将其命名为archive.tar.gz
。
Tar
最初设计用于创建存档以在磁带上存储文件,这就是为什么它的名字叫T
ape
AR
chive
的原因。有两种版本的tar,BSD tar和GNU tar,它们之间存在一些功能差异。大多数Linux系统都默认安装GNU tar
。
在本教程中,将说明如何创建/提取/解压缩tar
存档/压缩包文件。包括tar命令语法选项,创建tar.gz存档/压缩包,创建tar.bz2存档/压缩包,列出存档/压缩包所有文件/目录,提取/解压tar存档/压缩包,提取tar.gz和tar.bz2存档/压缩包,从tar存档中提取指定文件,从Tar存档中删除文件,添加文件到tar存档。
tar命令语法
在讨论如何使用tar命令之前,先回顾一下基本语法。
tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]
OPERATION
表示操作,tar
命令的操作包括:-c
/--create
表示创建一个新的tar
存档。-x
/--extract
表示从tar
存档文件中中解压整个存档或提取一个或多个文件与目录。-t
/--list
表示显示tar
存档中包含的文件/目录的列表。
OPTIONS
表示选项,tar
命令的选项包括:--verbose
/-v
表示打印tar命令正在处理的文件的信息,--file=archive=name
/-f archive-name
表示指定tar存档的文件名称。ARCHIVE_NAME
表示要操作的tar存档的名称。FILE_NAME(s)
表示要提取的文件与目录,多个文件与目录以空格分隔。如果未提供,则解压整个存档。
在执行tar命令时,可以使用tar操作和选项的长短形式。长形式更易读,而短形式更方便。长形式选项以双短划线--
开头。短形式选项以单个短划线-
为开头,可以省略。
创建tar存档/压缩包
tar命令使用-c
选项创建tar存档或和压缩包。例如,创建一个名为archive.tar
存档文件,并打包文件file1
,file2
,file3
。你运行以下命令:
tar -cf archive.tar file1 file2 file3
以下是使用长形式选项的等效命令:
tar --create --file=archive.tar file1 file2 file3
下面的例子将创建一个名为backup.tar
的存档,并打包/home/username
目录。
tar -cf backup.tar /home/username
在创建存档时,您可以打包一个或多个文件/目录。默认情况下,tar
命令将递归目录的所有文件并创建存档。如果你指定了--no-recursion
选项,tar
命令将不会递归目录的所有文件。
如你需要查看tar命令打包过程可使用tar的-v
选项可以查看正在处理的文件/目录。如果你想保留tar命令创建存档整个过程-v
选项的输出可以将标准输出重定向到文件中,你将运行以下命令:
tar -cfv backup.tar /home/username > tar.log
tar
命令的日志将写入到当前目录下的tar.log文件中。
创建tar.gz存档/压缩包
gzip
是压缩tar文件最流行的压缩算法。使用gzip压缩tar存档时,存档名称应以tar.gz
或者以tgz
结尾。以下命令将打包文件file1
,file2
到archive.tar.gz
存档文件/压缩包中,并使用gzip
进行压缩:
tar -czf archive.tar.gz file1 file2
-z
选项告诉tar创建存档文件时使用在gzip
压缩程序压缩存档。
创建tar.bz2存档/压缩包
压缩tar文件的另一种流行的程序是bzip2
。使用bzip2
压缩的存档,应使用tar.bz2
或tbz
作为文件的扩展名。使用-j
选项告诉tar
命令使用bzip2
程序压缩存档文件。以下命令将打包文件file1
,file2
到archive.tar.bz2
存档文件/压缩包中,并使用bzip2
进行压缩:
tar -cjf archive.tar.bz2 file1 file2
列出存档/压缩包所有文件/目录
要列出tar存档的所有文件/目录,请使用--list
选项,短形式-t
。以下命令将列出之前创建的archive.tar
存档中的文件/目录:
tar -tf archive.tar
输出将如下所示:
file1file2
file3
如果使用--verbose
/ -v
选项列出存档/压缩包的内容,则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存档,请使用--extract
/-x
选项并指定存档文件名。以下命令将解压/提取archive.tar
的文件到当前目录中:
tar -xf archive.tar
可使用-v
选项打印tar命令执行过程中正在处理的文件名称:
tar -xvf archive.tar
默认情况下,tar
命令将存档内容提取/解压缩到当前工作目录中。可使用--directory
/-C
选项指定输出目录,tar命令将文件解压/提取到你指定的目录。例如,要将存档的文件提取到/opt/files
目录。您将运行以下命令:
tar -xf archive.tar -C /opt/files
提取tar.gz和tar.bz2存档/压缩包
提取/解压缩tar.gz
或者tar.bz2
存档时,您不必指定解压缩选项。tar
命令将根据存档文件的扩展名,使用指定的压缩程序解压/提取存档文件。
例如以下tar
命令将自动指定使用的压缩程序,tar.gz
将使用gzip
压缩程序,tar.bz2
将使用bzip2
压缩程序。
tar -xf archive.tar.gz
tar -xf archive.tar.bz2
从tar存档中提取指定文件
要从tar存档中提取指定的文件,请在存档名称之后指定要提取的文件名/目录,多个文件/目录使用空格进行分隔。
以下tar命令将从archive.tar
存档文件提取file1
,file2
到当前工作目录:
tar -xf archive.tar file1 file2
提取文件时,必须提供相其确切的名称,即由使用--list
/-t
选项调用tar
命令时输出的名称。以下命令将从archive.tar
存档文件中提取多个目录。即dir1
,dir2
。
tar -xf archive.tar dir1 dir2
如果您尝试提取不存在的文件,将显示类似于以下内容的错误消息:
tar -xf archive.tar README
tar: README: Not found in archivetar: Exiting with failure status due to previous errors
使用通配符从tar存档中提取文件
要基于通配符模式从存档中提取文件,请使用--wildcards
选项并使用单引号转义,以防止shell程序解释它。例如,要提取名称以.js
作为扩展命令的Javascript文件,您将运行以下tar
命令:
tar -xf archive.tar --wildcards '*.js'
添加文件到tar存档
要将文件或目录添加到现有tar存档,请使用--append
/-r
选项。以下命令将添加名为newfile
的文件添加到archive.tar
:
tar -rvf archive.tar newfile
从Tar存档中删除文件
使用--delete
选项从存档中删除文件。例如,在archive.tar
存档文件中删除名为file1
的文件。将运行以下命令:
tar --delete -f archive.tar file1
结论
到目前为止,您应该很好地了解如何创建和提取/解压缩tar
存档文件。想要查看tar
命令的更多信息,请参阅Gnu tar文档页面,如有疑问请在下方评论留言。
以上是 如何使用tar命令创建/提取tar文件 的全部内容, 来源链接: utcz.com/z/507180.html