如何解压缩使用.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