如何提取 .tar.xz 文件?

如何提取 .tar.xz 文件?

某些软件似乎以新的存档格式分发:

$ file node-v18.7.0-linux-x64.tar.xz
node-v18.7.0-linux-x64.tar.xz: XZ compressed data

我如何提取它,最好使用 tar (就像我可以使用 gzip 或 bzip2 一样)?

答案1

几个tar实现(至少 GNUtarstarlibarchive bsdtar)已经处理这种压缩格式,您可以:

  • 不要显式指定格式,让 tar 自动检测压缩(使用 gtar²、bsdtar 或 star³):

    tar -xf node-v18.7.0-linux-x64.tar.xz
    

    或者,如果您想查看进度:

    tar -xvf node-v18.7.0-linux-x64.tar.xz
    
  • -J将/--xz与 GNU 或 libarchive 或-xzwith 一起使用star来告知tar期待 XZ

    tar -xJf node-v18.7.0-linux-x64.tar.xz
    
    gtar -xJf node-v18.7.0-linux-x64.tar.xz
    
    bsdtar -xJf node-v18.7.0-linux-x64.tar.xz
    
    star -x -xz -f node-v18.7.0-linux-x64.tar.xz
    

如果没有这些特定的tar实现或使用标准pax命令(tar已从 UNIX 标准中删除,因为实现之间存在太多不兼容性),请使用 ⁴ 解压缩存档xz,然后通过管道解压存档:

xz -dc node-v18.7.0-linux-x64.tar.xz | tar -xvf -
xz -dc node-v18.7.0-linux-x64.tar.xz | pax -rv

1 通常tar在 GNU 系统上调用,但如果安装在该系统旁边,通常gtar也会在其他系统上gnutar调用。gnu-tar

-² 对于 GNU tar,如果文件作为文件名在 stdin 上传递,或者文件不可查找,在这种情况下您需要传递该选项,则该选项不起作用-J

³ 对于星号,如果文件不可查找,则不起作用,在这种情况下您确实需要使用该-xz选项。tar -xf -只要 stdin 是可查找的,就仍然有效。

xz⁴ 请注意,在这种情况下,可能无法始终检测到故障。大多数类似 Bourne 的 shell 现在都支持pipefailksh93 中的选项,这可以在这里提供帮助;设置为set -o pipefail.

相关内容