-xfz
标志提取tarball。最近,我遇到了一个
.tar.xz
文件,我想一步一步地使用tar
将其解压缩,如何我可以这样做吗?#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 楼
我喜欢dtrxsudo 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-runtime
和libgnustep-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
评论
请注意,如果尚未安装xz-utils,则可能必须安装这是我的小脚本,可以为您猜测tar标志:gist.github.com/shime/5908634
tar --help列出tar标志。 -xzf适用于gzip。 -xjf到bz2。 -xJf到xz。
比使用tar更好地提出问题:使用unar或7z,不必担心再次为您的存档类型选择正确的程序。这是展望越来越多的存档类型的唯一可行的解决方案。除非您关心技术细节...