myfreax

如何提取/解压缩tar.gz文件

tar是Unix和类Unix系统上的存档打包工具,可以将多个文件合并为一个文件,打包后的文件约定扩展名上带有.tar,通常还有一个压缩程序的标识

5 min read
By myfreax
如何提取/解压缩tar.gz文件

tar命令允许您创建,提取,解压缩tar存档文件。 它支持各种压缩程序,例如gzipbzip2lziplzmalzopxzcompress压缩程序。

gzip命令是用于压缩tar文件的最流行算法。按照惯例,以gzip压缩的tar存档文件的名称应以.tar.gz.tgz结尾。简而言之,以.tar.gz结尾的文件是使用gzip压缩的.tar存档。

本教程介绍如何使用tar命令提取/解压缩.tar.gz.tgz文件存档/压缩文件。包括使用文件管理器解压缩文件,解压缩文件到指定目录,仅提取或者解压缩指定的文件/目录,读取标准输入并解压缩存档文件,列出.tar.gz.tgz文件存档的所有文件内容。

如需要创建tar文件的存档,可以参考我们的教程如何在Linux使用tar命令创建/提取tar文件。此教程几乎包括tar命令日常使用选项与解释。

如何使用tar命令创建/提取tar文件 | myfreax
tar命令用于将文件和目录打包并压缩为一个tar存档文件。它也可以提取tar存档/压缩包,显示存档/压缩包中包含的文件和目录的列表

解压缩文件

tar程序默认情况下预安装在所有Linux发行版和macOS上。要提取.tar.gz文件,请使用--extract或者-x选项调用tar命令,然后指定.tar.gz存档文件名称:

tar -xf archive.tar.gz

tar自动检测压缩类型并解压缩文件。 可以使用同一命令来解压缩使用其他压缩程序的tar存档文件,例如.tar.xz存档文件和或.tar.bz存档文件

如果您不是命令行用户,则可以使用GUI文件管理器。 只需右键单击要提取或者解压缩.tar.gz文件,,然后选择提取。 Windows用户需要一个名为7zip的软件来提取或者解压缩.tar.gz文件。

要获得更详细的输出,请使用-v选项。 此选项告诉tar在终端上显示正在提取的文件的名称。

tar -xvf archive.tar.gz

默认情况下,tar提取存档中的文件到当前工作目录。 要提取或者解压缩到指定目录中,请使用--directory或者-C选项。以下示例显示如何将存档文件解压缩/提取到/home/myfreax/files目录中:

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

提取指定文件

要从.tar.gz文件中提取指定文件,请在存档文件按名称后附加要提取的文件名,多个文件以空格作为分隔符:

tar -xf archive.tar.gz file1 file2

提取文件时,必须提供其确切名称,包括使用--list/-t选项调用tar时显示的路径。从存档中提取一个或多个目录与提取多个文件相同。提取多个目录命令如下所示:

tar -xf archive.tar.gz dir1 dir2

如果您尝试提取档案中不存在的文件,则会显示类似以下错误消息:

tar -xf archive.tar.gz README
tar: README: Not found in archive
tar: Exiting with failure status due to previous errors

--wildcards选项允许您基于通配符模式/正则表达式从.tar.gz文件中提取文件。 必须使用单引号对转义模式,以防止shell解释模式中的特殊符号。例如,要仅提取名称以.png结尾的文件。可以使用以下命令:

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

读取标准输入

当通过从标准输入/管道读取存档文件并解压缩/提取.tar.gz文件时,必须指定解压缩选项。-z选项告诉tar使用gzip压缩程序提取/解压存档文件。

在下面的示例中,我们使用wget命令下载Linux内核,并将wget命令生成的标准输出通过管道传递到tar命令以进行解压/提取:

wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.3.tar.xz -O - | sudo tar -xz

如果您未指定解压缩选项,则tar将显示您应该使用的选项:

tar: Archive is compressed. Use -J option
tar: Error is not recoverable: exiting now

列出tar.gz文件的内容

要列出.tar.gz存档文件所有文件内容,请使用--list/-t选项:

tar -tf archive.tar.gz

输出看起来像这样:

file1
file2
file3

如果添加--verbose/-v选项,则tar将打印更多信息,例如所有者,文件大小,时间戳等:

tar -tvf archive.tar.gz
-rw-r--r-- myfreax/users       0 2020-02-15 01:19 file1
-rw-r--r-- myfreax/users       0 2020-02-15 01:19 file2
-rw-r--r-- myfreax/users       0 2020-02-15 01:19 file3

结论

.tar.gz文件是使用gzip压缩程序的Tar存档文件。要提取.tar.gz文件,请使用tar -xz命令,后跟文件名称。如有任何疑问,请在下面发表评论。