Linux中的Tar命令(创建和提取档案)

时间:2020-03-05 15:27:13  来源:igfitidea点击:

“ 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 =名称'('-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归档文件时,归档文件名称应以'tar.bz2'或者'tbz'结尾。

当指定“ -j”选项时,tar将使用“ bzip2”算法来压缩档案。
以下命令将根据给定的文件创建一个“ tar.bz2”归档文件:

tar -cjf archive.tar.bz2 file1 file2

列出Tar档案

当与'--list'('-t')方法一起使用时,'tar'命令将列出tar归档文件的内容,而不会将其解压缩。
下面的命令将列出“ archive.tar”文件的内容:

tar -tf archive.tar

输出将列出存档中所有文件的名称:

file1file2file3

要获取更多信息,例如文件所有者,文件大小,时间戳记,请使用'--verbose'('-v')选项:

tar -tvf archive.tar
-rw-r--r-- theitroad/users       0 2016-09-08 01:19 file1-rw-r--r-- theitroad/users       0 2016-09-08 01:19 file2-rw-r--r-- theitroad/users       0 2016-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