在什么情况下,gunzip和tar xf可以工作,但是tar xzf失败?


9

为了说明这一点:我已经从公司的网站下载了LEDA库。在其上使用tar -xzf失败:

$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz 
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

但是,先执行gunzip,再执行tar -xf即可:

$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error

谁能告诉我为什么会这样吗?-我希望标准tar命令一直运行。


什么操作系统?IIRC的Unix tar不能实现-z
Bananguin 2013年

@ user1129682从公司站点看,它似乎只有Linux和Win选项
。– MattDMo

如果您的tar不支持z,请改用管道:gunzip < archive.tar.gz | tar -x应可在任何地方使用。
frostschutz

如果您的副本tar不支持gunzip解压缩,则可以执行以下操作:gunzip -c $file | tar -x。通常将其包装在shell函数中。

1
我只是tar xzf在Debian GNU / Linux(当然使用gnutar)上下载了该档案,并确实给出了错误。奇。
derobert

Answers:


12

似乎发生了什么事,他们已经双重压缩了档案。

如果您file在gunzip文件上运行,您会发现它仍然是gzip存档。如果您将其重命名为.gz,则可以再次将其压缩。

如果-z输入是文件,则gnu tar最近似乎会自动添加该选项。因此,这就是为什么-z在您运行gunzip一次后tar会自动添加它而无需选择该选项的原因。

从信息页面记录了此行为:

“读取压缩的归档文件甚至更简单:您无需指定任何其他选项,因为GNU`tar'会自动识别其格式。[...]格式识别算法基于“签名”,即签名中的特殊字节序列。文件的开头,特定于某些压缩格式。”

那是从第8.1.1节“创建和读取压缩档案”中得出的。


很好发现!确认包含Gunzip和tar的所有组合。
Michael Schubert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.