如何解压缩使用 .xz 的 tarball?

Jor*_*tro 916 compression tar

我习惯于提取带有-xfz标志的tarball,该标志处理 gzip 和 bzip2 档案。

最近我遇到了一个.tar.xz文件,我想使用 一步解压缩它,tar我该怎么做?

ram*_*lök 1165

Ubuntu 包含 GNU tar,它自己识别格式!根据手册,一个命令适用于任何支持的压缩方法。

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar
Run Code Online (Sandbox Code Playgroud)

等。如果 tar 出现Cannot exec错误,您可能需要sudo apt install xz-utils先。

  • 如果你遇到 `tar: xz: Cannot exec: No such file or directory`,请安装 `xz-utils`:`sudo apt-get install xz-utils` (49认同)
  • 这是 GNU tar 的一个特性。我不知道竞争的实现,但 GNU tar 应该是与 ubuntu 最相关的。http://www.gnu.org/software/tar/manual/tar.html#SEC131 (44认同)
  • 这不是答案,而是“即使您问过,您也不关心答案”的回应。为那些不在“最新”上的人考虑一下 (10认同)
  • @SeanHoulihane,这不是答案,因为 OP 提出了一个小 [XY 问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。ramslök 给出的 OP 比要求的要好,其中包括有效的“即使你问了,你也不关心答案”,这是恰当的,因为它是真实的。 (9认同)
  • 哪个版本的 `tar` 不再需要特定的标志? (6认同)
  • 如果你不记得,它代表,并且等同于:`tar --extract --file archive.tar.xx` (2认同)
  • @MarkTomlin 和其他提问的人,在 2004 年 12 月发布的 GNU tar 1.15 中添加了压缩档案自动检测。 (2认同)
  • 这个答案对我不起作用,得到了一个`tar: This doesn't look like a tar archive`错误。然而,Mathias Bynens 的回答确实有效。 (2认同)

jrg*_*jrg 371

尝试

tar -xJf file.pkg.tar.xz

-J是专门处理 .xz 文件的标志。

  • 我想知道 2020 年我们会有多少个标志。比如……45 种不同的压缩?了解 tar 开关已经是 Linux-fu 中的黑带。:/ (72认同)
  • https://xkcd.com/1168/ (32认同)
  • @Shiki:这可能就是为什么它不再让您指定压缩格式标志的原因。(见 ramslök 的回答。) (24认同)
  • 在 2030 年旗帜成为图灵完备...... 2040 年他们变得有知觉 (11认同)
  • 这应该完全是公认的答案,因为它回答了支持“.xz”的任何版本的 tar 的问题 (7认同)
  • 2020 年,看起来 GNU tar 支持 8 个压缩标志 (5认同)

Mat*_*ens 86

如果由于某种原因tar解决方案不起作用(可能是因为您使用的是 OS X 内置程序),请尝试以下操作:

unxz < file.tar.xz > file.tar
Run Code Online (Sandbox Code Playgroud)

……相当于:

xz -dc < file.tar.xz > file.tar
Run Code Online (Sandbox Code Playgroud)

然后使用tar解压文件。

  • 我觉得你可以做`unxz &lt; file.tar.xz | tar x` 或类似的。 (7认同)
  • 这对我有用,而 `ta​​r xf` 没有。Ubuntu 12.04 (7认同)
  • 那应该可以用管道建造。 (3认同)

小智 36

xz 是无损数据压缩器。您必须从 xz 中提取焦油球,然后提取焦油:

unxz my_archive.tar.xz      # results in my_archive.tar
Run Code Online (Sandbox Code Playgroud)

然后你知道提取焦油

tar -xf my_archive.tar
Run Code Online (Sandbox Code Playgroud)

资料来源:XZ Utils - 维基百科

  • 最佳答案。`xz` 不需要标准输出重定向。更好的是:`unxz -k` (2认同)
  • 这对我有用,但需要注意的是它会删除原来的 tar.xz 文件 (2认同)

小智 21

我遇到了同样的问题,该tar xf命令无法提取它。要解决此问题,您需要安装该xz-utils软件包。解决方案是:

sudo apt-get install xz-utils
Run Code Online (Sandbox Code Playgroud)

然后:

tar xf myfile.tar.xz
Run Code Online (Sandbox Code Playgroud)


nsa*_*ane 18

tar -xvf package.tar.xz
Run Code Online (Sandbox Code Playgroud)

-x - 提取文件

-v - 详细列出处理的文件

-f - 使用指定的存档文件


小智 6

只想补充一点,如果您有1.22 版之前的旧版本GNU tar,当 --xz 和 -J 选项可用时,您可以使用--use-compress-program xz. 例如,

tar --use-compress-program xz -cf example.tar.xz file1 file2 file3
Run Code Online (Sandbox Code Playgroud)

或者

tar --use-compress-program xz -xf example.tar.xz
Run Code Online (Sandbox Code Playgroud)


Ori*_*lor 5

如果 tar 识别压缩格式,则不需要标志:

tar xvf *.tar.xz

如果您需要手动解压缩输入,例如因为您的 tar 太旧无法识别 xz,或者您需要一个特殊路径:

xz -cd *.tar.xz | tar xvf -

管道比制作未压缩的中间文件更快,并且使用的磁盘空间也更少!


小智 5

我喜欢dtrx

sudo apt install dtrx
dtrx your-file.tar.xz
Run Code Online (Sandbox Code Playgroud)