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

我习惯用-xfz标志提取tarball,它处理gzip和bzip2档案。

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

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

 tar xf archive.tar.xz tar xf archive.tar.gz tar xf archive.tar 

如果tar给出了一个Cannot exec错误,你可能需要先sudo apt install xz-utils

尝试

tar -xJf file.pkg.tar.xz

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

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

 unxz < file.tar.xz > file.tar 

……相当于:

 xz -dc < file.tar.xz > file.tar 

然后使用tar来解压缩文件。

xz是无损数据压缩器。 您将不得不从xz中提取tar球,然后提取tar:

 unxz my_archive.tar.xz # results in my_archive.tar 

然后你知道提取焦油

 tar -xf my_archive.tar 

来源: XZ Utils – 维基百科 。

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

 sudo apt-get install xz-utils 

然后:

 tar xf myfile.tar.xz 

关于什么

 tar -xvf package.tar.xz 

-x – 提取文件

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

-f – 使用指定的归档文件

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

tar xvf *.tar.xz

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

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

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

只是想补充一点,如果在版本1.22之前有一个旧版本的GNU tar ,当–xz和-J选项可用时,您可以使用--use-compress-program xz压缩或解压缩tar.xz文件。 例如,

 tar --use-compress-program xz -cf example.tar.xz file1 file2 file3 

要么

 tar --use-compress-program xz -xf example.tar.xz 

哇,这是一个非常好的。 它是用Mac上的7zip完成的吗? 试试这个:

 7z x -so file.tar.xz | tar xf - 

Ubuntu附带Python(Python 2.7和Python 3),其中包含用于提取存档的必要模块。 因此,如果由于某种原因缺少tar命令(假设您的系统管理员已删除它并且您没有sudo privillege来安装它),可以使用:

 python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz 

作为一个简短的脚本,它更具可读性:

 #!/usr/bin/env python3 import tarfile,sys with tarfile.open( sys.argv[1] ) as fd: fd.extractall() 

假设我使用tar cJf thing.xz /etc/passwd创建了一个.xz文件。 存档将包含etc目录,其中包含passwd文件。 使用上面的脚本将导致在当前工作目录中创建的etc目录,其中将是passwd文件。 当然,这总是可以通过在extractall()函数中指定要提取的路径来扩展。

我喜欢dtrx

 sudo apt install dtrx dtrx your-file.tar.xz