如何提取(解压缩) tar.xz 文件

tar 命令允许您创建和提取 tar 归档文件。它支持各种压缩程序,例如 gzip , bzip2 , lzip , lzma , lzop , xz 和 compress 。

xz 是基于 LZMA 算法的一种流行的文件压缩算法。按照约定,用 xz 压缩的 tar 归档文件的名称以 .tar.xz.txz结尾

本文介绍了如何使用 tar 命令提取(或解压缩 ) .tar.xz.txz 档案。

提取 tar.xz 文件

默认情况下,所有 Linux 发行版和 MacOS 实用程序预装 tar

要提取 tar.xz 文件,请在调用 tar 命令时使用 --extract (-x) 选项,并在 -f 选项后跟上存档文件名:

tar -xf archive.tar.xz

tar 自动检测压缩类型并提取存档。可以使用同一命令来提取使用其他算法压缩的 tar 存档(例如 .tar.gz.tar.bz2)

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

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

tar -xvf archive.tar.xz

默认情况下, tar 将归档内容提取到当前工作目录中。要提取特定目录中的存档文件,请使用 --directory (-C) 。

以下示例显示了如何将归档内容提取到 /home/linuxize/files 目录中:

tar -xf archive.tar.xz -C /home/linuxize/files

从 tar.xz 文件中提取特定文件

要从 tar.xz 文件中提取特定文件,请在归档文件名称后附加要提取的文件名,多个文件请使用空格分隔:

tar -xf archive.tar.xz file1 file2

提取文件时,必须提供其确切名称,包括路径(您可以使用 tar 带上 --list(-t) 选项显示路径)。

从存档中提取一个或多个目录与提取多个文件相同:

tar -xf archive.tar.xz dir1 dir2

如果您尝试解压缩档案中不存在的文件,将显示类似于以下内容的错误消息:

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

选项 --wildcards 使您可以基于通配符模式从 tar.xz 文件中提取文件。该模式必须加引号,以防止 shell 程序解释它。

例如,要仅提取名称以结尾的文件 .png ,可以使用:

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

从标准输入中提取 tar.xz 文件

通过从标准输入(通常通过管道)读取档案来提取压缩的 tar.xz 文件时,必须指定解压缩选项。 tar 使用 -J 选项指明该文件已使用 xz 压缩。

在下面的示例中,我们使用 wget 命令下载 Linux 内核,并将其输出传递给 tar 命令:

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

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

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

列出 tar.xz 文件内容

要列出 tar.xz 文件的内容,请使用 --list (-t) 选项:

tar -tf archive.tar.xz

输出将如下所示:

file1
file2
file3

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

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

结论

tar.xz 文件是使用 xz 压缩的 Tar 归档文件。要提取 tar.xz 文件,请使用 tar -xf 命令。