Linux中的Tar命令(创建和解压压缩包)
tar
命令通过将一组文件转换为一个存档来创建tar文件。它还可以提取tar压缩包,显示包含在压缩包中的文件列表,向现有的压缩包中添加额外的文件,以及其他各种操作。
Tar最初是为创建档案来存储磁带上的文件而设计的,这就是为什么它的名字是"Tape ARchive"。
本文通过实际的例子和对最常见的tar选项的详细解释,展示了如何使用tar
命令来提取、列出和创建tar档案。
tar
命令的句法
有两个版本的tar,BSD tar ,和GNU tar ,有一些功能上的区别。大多数Linux系统默认都预装了GNU tar。
tar
命令的一般语法如下:。
tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]
OPERATION
- 只允许并要求一个操作参数。最经常使用的操作是:--create
(-c
) - 创建一个新的tar归档文件。--extract
(-x
) - 提取整个存档或存档中的一个或多个文件。--list
(-t
) - 显示归档中包含的文件列表
OPTIONS
- 最经常使用的操作是:--verbose
(-v
) - 显示正在被tar命令处理的文件。--file=archive=name
(-f archive-name
) - 指定归档文件的名称。
ARCHIVE_NAME
- 归档的名称。FILE_NAME(s)
- 以空格分隔的要从档案中提取的文件名列表。如果没有提供,就会提取整个档案。
在执行tar命令时,你可以使用tar
操作和选项的长或短形式。长的形式更易读,而短的形式输入起来更快。长格式选项的前缀是一个双破折号(--
)。短格式选项的前缀是一个单破折号(-
),可以省略。
创建tar压缩文件
Tar 支持范围广泛的压缩程序,例如gzip
、bzip2
、lzip
、lzma
、lzop
、xz
和compress
。创建压缩的 tar 存档时,将压缩器后缀附加到存档文件名是一种公认的约定。例如,如果存档已使用 gzip
压缩
,它应该被命名为 archive.tar.gz。
要创建 tar 存档,请使用 -c
选项,后跟 -f
和存档名称。
例如,要从名为 file1
、file2
、file3
的文件创建名为 archive.tar
的存档,您将运行以下命令:
tar -cf archive.tar file1 file2 file3
这是使用长格式选项的等效命令:
tar --create --file=archive.tar file1 file2 file3
您可以从一个或多个目录或文件的内容创建存档。默认情况下,除非指定--no-recursion
选项,否则递归归档目录。
以下示例将在 /home/user
目录中创建一个名为 user_backup.tar
的存档:
tar -cf backup.tar /home/user
如果要查看正在处理的文件,请使用 -v
选项。
创建 Tar Gz 压缩文件
Gzip是最流行的压缩tar文件的算法。当用gzip压缩tar档案时,档案名称应该以tar.gz
或tgz
结尾。
-z
选项告诉tar在创建存档时使用gzip
算法进行压缩。例如,要从给定的文件中创建一个tar.gz归档文件,你要运行以下命令。
tar -czf archive.tar.gz file1 file2
创建Tar Bz2压缩文件
另一种流行的压缩tar文件的算法是bzip2。当使用bzip2时,存档名称应该以tar.bz2
或tbz
结尾。
要用bzip2
算法压缩档案,请用-j
选项调用tar
。下面的命令从给定的文件中创建了一个tar.bz2
档案。
tar -cjf archive.tar.bz2 file1 file2
列出 Tar 档案内容
当与--list
(-t
)选项一起使用时,tar
命令列出了一个tar归档文件的内容,而不提取它。
下面的命令,将列出archive.tar
文件的内容。
tar -tf archive.tar
file1
file2
file3
要获得更多的信息,如文件所有者、文件大小、时间戳,请使用--verbose
(-v
)选项。
tar -tvf archive.tar
-rw-r--r-- linuxize/users 0 2018-09-08 01:19 file1
-rw-r--r-- linuxize/users 0 2018-09-08 01:19 file2
-rw-r--r-- linuxize/users 0 2018-09-08 01:19 file3
提取 Tar 压缩文件
Linux中的大多数归档文件都是用tar或tar.gz格式归档和压缩的。知道如何从命令行中提取这些文件是很重要的。
要提取一个tar归档文件,使用--extract
(-x
)选项,后面跟上归档文件的名称。
tar -xf archive.tar
添加-v
选项来打印被提取的文件的名称也是很常见的。
tar -xvf archive.tar
在不同的目录中提取 Tar 文件
默认情况下,tar将在当前工作目录下的存档内容 。使用--directory
(-C
)在特定目录中提取存档文件:
例如,要提取存档内容到/opt/files
目录,你可以使用。
tar -xf archive.tar -C /opt/files
提取Tar Gz和Tar Bz2压缩文件
当提取压缩档案,如tar.gz
或tar.bz2
时,你不必指定解压选项。该命令与提取tar
文件时相同。
tar -xf archive.tar.gz
tar -xf archive.tar.bz2
从Tar档案中提取特定的文件
有时,你可能不需要提取整个存档,而只需要提取其中的几个文件即可。
要从tar归档文件中提取特定的文件,请在归档文件名后附加一个用空格分隔的要提取的文件名的列表。
tar -xf archive.tar file1 file2
当提取文件时,你必须提供它们的准确名称,包括路径,正如--list
(-t
)所打印的那样。
从归档文件中提取一个或多个目录与提取文件是一样的。
tar -xf archive.tar dir1 dir2
如果你试图提取一个不存在的文件,将显示一个类似于以下的错误信息。
tar -xf archive.tar README
输出
tar: README: Not found in archive
tar: Exiting with failure status due to previous errors
使用通配符从 Tar 归档文件中提取文件
要根据通配符模式从归档文件中提取文件,请使用--wildcards
开关,并引用该模式,以防止shell解释它。
例如,要提取名称以.js
结尾的文件(Javascript文件),你可以使用。
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档案。要提取一个归档文件,使用tar -xf
命令,后面跟着归档文件的名称,要创建一个新的归档文件,使用tar -czf
,后面跟着归档文件的名称和你想添加到归档文件的文件和目录。
关于tar命令的更多信息,请查阅Gnu tar文档页面 。