我习惯使用带有处理gzip和bzip2存档的-xfz标志提取tarball。

最近,我遇到了一个.tar.xz文件,我想一步一步地使用tar将其解压缩,如何我可以这样做吗?

评论

请注意,如果尚未安装xz-utils,则可能必须安装

这是我的小脚本,可以为您猜测tar标志:gist.github.com/shime/5908634

tar --help列出tar标志。 -xzf适用于gzip。 -xjf到bz2。 -xJf到xz。

比使用tar更好地提出问题:使用unar或7z,不必担心再次为您的存档类型选择正确的程序。这是展望越来越多的存档类型的唯一可行的解​​决方案。除非您关心技术细节...

#1 楼

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

评论


这是GNU tar的功能。我不了解竞争性的实现,但是GNU tar应该与ubuntu最相关。 gnu.org/software/tar/manual/tar.html#SEC131

–ramslök
2012年2月29日在2:20



如果您遇到tar:xz:无法执行:没有这样的文件或目录,请安装xz-utils:sudo apt-get install xz-utils

–科林·安德森
2014年2月11日下午16:33

这不是答案,而是“即使您提出要求,您也不关心答案”。为不在“最新”状态的人保留思想

– Sean Houlihane
15年1月20日在9:41

哪个版本的tar不再需要特定标志?

–马克·汤姆林
15年5月13日在19:19

@SeanHoulihane,这不是答案,因为OP询问了一个较小的XY问题。 ramslök给OP的要求比要求的要好,其中包括有效的“即使您提出要求,您也不关心答案”,这是正确的,因为它是正确的。

–克里斯托斯·海沃德(Christos Hayward)
2015年9月5日在22:49

#2 楼

试试

tar -xJf file.pkg.tar.xz

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

评论


我想知道2020年我们将有多少旗帜。例如... 45种不同的压缩方式?在Linux-fu中,了解tar开关已经是一件黑事。 :/

– Apache
2013年6月7日15:13



@Shiki:这可能就是为什么它不再让您指定压缩格式标志的原因。 (请参阅ramslök的答案。)

–内特C-K
13-10-23在3:37

xkcd.com/1168

– Wordzilla
2015年3月25日13:21

这应该是完全可以接受的答案,因为它可以回答任何支持.xz的tar版本的问题

–pospi
15年7月8日在12:21

在2030年,图灵国旗将完成。到2040年,国旗将变得有感觉。

–user1359
17年2月14日在19:46

#3 楼

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

unxz < file.tar.xz > file.tar


…等效到:

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


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

评论


那应该可以用管道构造。

– Gerrit
2014年3月20日在18:43

我觉得您可以只做unxz
–三十三十四
2014年5月16日14:39

这对我有用,而tar xf却没有。 Ubuntu 12.04

– philshem
14年8月14日在20:57

至少在我的Ubuntu计算机上,unxz不等于xz -dc,而是xz -d。因此,要将file.tar.xz提取到file.tar,您只需编写unxzfile.tar.xz。如果要等效于xz -dc,解压缩为stdout,请使用xzcat。例如xzcat file.tar.xz |焦油x。

–nwellnhof
17年5月25日下午16:50

#4 楼

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

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


然后您知道要提取焦油

tar -xf my_archive.tar


资料来源:XZ Utils-Wikipedia。

评论


最佳答案。 xz不需要stdout重定向。更好的是:unxz -k

– Mark Jeronimus
17年2月27日在9:29

@MarkJeronimus我觉得它不是很好,因为它创建了一个中间文件。使用GNU焦油或管道应减少资源需求。

–梅勒比乌斯
19年7月2日在7:44

这对我有用,但是应该注意,它将删除原始的tar.xz文件

–凯利·邦(Kelly Bang)
2月29日在3:05



#5 楼

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

sudo apt-get install xz-utils


然后:

tar xf myfile.tar.xz


#6 楼

tar -xvf package.tar.xz


-x-提取文件

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

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

#7 楼

只需添加一下,如果当--xz和-J选项可用时,如果您在版本1.22之前具有较旧的GNU tar版本,则可以使用--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


#8 楼

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

tar xvf *.tar.xz

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

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

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

#9 楼

哇,真是个好人。在Mac上使用7zip完成吗?试试这个:

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


评论


需要7z,这不是他想要的-他想完全在tar中完成。

– jrg
2012年1月3日,0:08

是的,谢谢-“ xz”救了我!好吧,无论如何这是一个步骤:)而且tar J = tar xz,因此我们甚至可以像“普通” tar xvfz file.tar.gz一样编写tar xzffile.tar.xz。所以基本上没有区别。使用开关前无需破折号。

–user8290
2012年1月3日,0:19

就像问题中给出的答案一样。 :)

–user8290
2012年1月3日,0:26

我也被赶走了,因为tar zxf在.xz文件上出错了,我想一直使用J总是可行的。

–乔治·卡斯特罗(Jorge Castro)
2012年1月3日,0:28

对!手册页与源代码不同步:buffer.c使用-J表示lzma。

–user8290
2012年1月3日,0:45

#10 楼

我喜欢dtrx

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


#11 楼

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()


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

#12 楼

unar是一个非常不错的简单程序,易于键入,可以取消归档几乎所有格式,包括7z和RAR

它似乎是用(GNU)Objective-C编写的,因此需要安装一些gnustep(GNU Objective-C实现)库(gnustep-base-runtimelibgnustep-base1.25

如果您使用--install-suggests或已配置apt安装建议的软件包,则unar将建议并安装许多GUI GNUStep程序,而这些不是您所需要的想要

sudo apt install --no-install-suggests unar 
unar linux-source.tar.xz


它将自动创建输出目录linux-source

评论


最佳答案(尽管该问题特别提到使用tar来完成工作...)。自从安装此程序以来,我不必再寻找如何再次解压缩档案X了。所有这些知识都编码在该程序中。这就是一切应该一起工作的方式...

– masterxilo
3月21日18:07