tar为什么无法提取.zip文件?[关闭]


28

我尝试使用的大多数格式(gzip等)来提取zip文件tar,但是当我对Google感到沮丧时,我发现没有办法使用来提取zip文件,tar而只建议使用zipunzip。事实上,我的Linux系统甚至没有zip实用程序,而只有实用程序unzip(让我想知道为什么这是推荐的主要选项)。当然unzip可以解决我的问题,但是为什么不能tar提取zip文件?也许我应该问的是,zip和zip支持的压缩方法之间有什么区别tar


1
请注意,bsdtar可以提取.zip档案:P
HalosGhost 2014年

12
您的意思是说:“我为什么不能用开罐器切胡萝卜?” tar具有它自己的文件格式,然后使用您选择的任何一种方法对其进行压缩。zip是一种完全不同的野兽。就那么简单。它是“ unix方式”,只有一个小工具可以很好地完成一项任务,而不是拥有可以满足您所有需求的产卵,产羊毛的母猪。
天衣

我稍微修改了我的问题以使其更清楚,但我认为我的问题明确暗示我认为zip是一种压缩格式,而不是tar + compression的替代工具。我选择的答案纠正了我的假设,并表明该答案不是基于观点的。
冥王星

zip默认情况下您没有默认
权限,

Answers:


29

UNIX的哲学是拥有小型工具。一种工具恰好在做一件事,但这做得特别好。

tar工具仅将多个文件合并为一个文件,而无需进行任何压缩。

gzip工具只是压缩单个文件。

如果您想同时拥有这两种工具,则只需将这两种工具结合在一起即可生成一个.tar.gz文件。


zip工具是完全不同的东西。它需要一堆文件,并将它们组合成一个压缩文件。具有完全不同的算法。


如果要使用一种工具来统治它们,请全部使用atool。只需检测格式并调用正确的工具,它将支持一大堆不同的格式。


感谢您实际解释两者的目的,而不仅仅是解释tar的作用。在查看维基百科文章后,我很快找到了答案,该文章在三个不同的表格中列出了“存档”,“压缩”和这两种格式。我以为我会等待一个明确解释这一问题的答案。
冥王星

有点挑剔,gzip压缩算法与所使用的算法相同zip。区别在于,gzip压缩任何字节流(包括.tar文件),而zip受PKZIP派生和启发的while ,将一步(按该顺序)压缩和存档。
Joe Sewell

9

长话短说:tar GNU工具不会通过zip / unzip进行传送,因为没有人在乎。

长话短说,原始大小:

tar最初并不是要解压缩文件,而是要在一个大文件中归档多个文件。由于人们不仅要存档他们的文件,而且还要对其进行压缩,因此他们只是将tar输出通过任何接受数据流输入并将结果拖放到文件的压缩器进行管道传输。利润!

现在,为了使此任务尽可能轻松,tar决定在内部将生成的文件通过管道传输到gzip,lzma等压缩工具,这些文件在运行时会通过每种格式的特殊标志激活tar。这就是为什么当您尝试通过其提取损坏的文件时tar,会显示潜在的工具错误而不是tars的原因:

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

因此,并不是tar没有解压缩zip文件,而是tar没有能力通过正确的工具将其管道传输,因为实际上没有人愿意执行它,而zip已经完成了tar文件的文件存档功能格式化tar支持它的理由很少。

现在,有多种工具可以压缩/解压缩您扔给它们的所有内容,同样,您需要有正确的工具来实际支持它。如果没有它们,该工具将失败。


1
嗯,除了没有人实施正确的工具来进行管道传输外,没有其他人可以使用:tar文件只能将多个文件组合成一个文件。压缩是独立的。因此,过滤器的tar管道仅压缩/解压缩单个tar文件。邮编的工作方式有所不同;它使用一个集成工具进行压缩和组合(类似于Unix程序afio)。
derobert

我建议提及一些现有的多合一压缩工具。例如,有GNOME file-roller...
derobert

如果您安装了unzip / zip / p7zip,则@derobert file-roller仅支持zip。否则就像tar一样没用。
Braiam 2014年

如果您还安装了相关工具,则tar仅支持其各种压缩版本。多格式存档管理器非常有用,因为它们为您提供了一个一致的界面来处理不同的存档格式。
derobert

完全是@derobert。
Braiam 2014年

3

一个tar文件本身是一种文件格式,专为磁带归档。然后可以使用(例如)gzipbzip2压缩格式压缩此格式。提取压缩的tar文件时,可以有效地将其解压缩,然后从未压缩的tar文件中提取原始文件。

提取zip文件时,其中没有tar文件,只有所有原始文件。因此,根本没有理由tar参与该过程。

您也可以使用gzipbzip2单独压缩文件,就像可以创建zip文件一样(不tar涉及)。解压缩这些文件时,请使用gunzipbunzip2而不是tar


1

由于“有些事情确实存在,我们应该接受它们”的答案也不适合我,所以我只是做了一些挖掘工作(总是很高兴学习新的东西,对吗?)。

因此,看来问题出在工具的去向及其目的之一。

与其解释我所发现的东西并不必要地使水变得暗淡(混淆让我烦恼),不如看一下这篇文章:http : //www.differencebetween.net/technology/difference-between-zip-and-gzip/

我想tar可以内置zip支持,但是方法显然根本不同。也许他们想知道为什么有人会使用这个存档工具来管理另一个存档和压缩工具中的文件(或者两个原始编码器之间可能存在一些争议,并且有禁止令禁止zip跨越应用程序边界。是的,我在开玩笑。

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.