Linux tar命令(创建和提取归档)

・10 分钟阅读

Tar最初是为创建归档文件而设计的,用来在磁带上存储文件,这就是为什么它的名字是"tape AR chive"

在本教程中,向你展示如何使用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支持大量压缩程序,如gzipbzip2lziplzma和xz,创建压缩的tar归档文件时,接受将压缩器后缀附加到归档文件名,例如如果已使用gzip压缩了归档文件,就应命名为archive.tar.gz,

要创建tar归档文件,请使用-c选项,后跟-f和归档文件的名称。

例如要从名为archive.tar的文件file1file2file3创建名为的归档文件,

tar -cf archive.tar file1 file2 file3

以下是使用长格式选项的等效命令:

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

从一个或多个目录或文件的内容创建归档,默认情况下,目录递归归档,除非指定了--no-recursion选项。

以下示例将创建一个user_backup.tar/home/user目录的归档文件:

tar -cf backup.tar /home/user

如果要查看正在处理的文件,请使用-v选项,

创建Tar Gz归档文件

Gzip是压缩tar文件的最流行的算法,使用gzip压缩tar归档时,归档名称应该以tar.gztgz结尾。

-z选项告诉tar在创建时使用gzip算法压缩归档文件,例如要从给定文件创建tar.gz归档文件,可以使用以下命令:

tar -czf archive.tar.gz file1 file2

创建Tar bz归档

压缩tar文件的另一个流行算法是bzip,使用bzip压缩tar归档时,归档名称应以tar.bz2tbz结尾,

指定-j选项时,tar使用bzip2算法压缩归档文件,以下命令将从给定文件创建tar.bz2归档文件:

tar -cjf archive.tar.bz2 file1 file2

列出Tar归档文件

当与--list ( -t )选项一起使用时,tar命令将列出tar归档文件的内容,而不提取它,命令bellow将列出archive.tar文件的内容:

 tar -tf archive.tar
输出将列出归档中所有文件的名称:
file1file2file3

要获取更多信息,如文件所有者,文件大小,时间戳记使用--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 bz归档

在提取压缩归档文件(如tar.gztar.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操作从归档文件中删除文件。

下面的示例演示如何从tar中删除文件file1

tar --delete -f archive.tar file1

结束语

tar命令最常见的用法是创建和提取tar归档文件,提取归档文件时,使用tar -xf命令,后跟归档名称,并创建一个新文件,使用tar -czf,后跟归档名称以及要添加的文件和目录。

有关tar命令的详细信息,请参阅gnu tar文档页面。

讨论
Syq2803 profile image