我尝试使用的大多数格式(gzip等)来提取zip文件tar
,但是当我对Google感到沮丧时,我发现没有办法使用来提取zip文件,tar
而只建议使用zip
或unzip
。事实上,我的Linux系统甚至没有zip
实用程序,而只有实用程序unzip
(让我想知道为什么这是推荐的主要选项)。当然unzip
可以解决我的问题,但是为什么不能tar
提取zip文件?也许我应该问的是,zip和zip支持的压缩方法之间有什么区别tar
?
zip
默认情况下您没有默认
我尝试使用的大多数格式(gzip等)来提取zip文件tar
,但是当我对Google感到沮丧时,我发现没有办法使用来提取zip文件,tar
而只建议使用zip
或unzip
。事实上,我的Linux系统甚至没有zip
实用程序,而只有实用程序unzip
(让我想知道为什么这是推荐的主要选项)。当然unzip
可以解决我的问题,但是为什么不能tar
提取zip文件?也许我应该问的是,zip和zip支持的压缩方法之间有什么区别tar
?
zip
默认情况下您没有默认
Answers:
UNIX的哲学是拥有小型工具。一种工具恰好在做一件事,但这做得特别好。
该tar
工具仅将多个文件合并为一个文件,而无需进行任何压缩。
该gzip
工具只是压缩单个文件。
如果您想同时拥有这两种工具,则只需将这两种工具结合在一起即可生成一个.tar.gz
文件。
该zip
工具是完全不同的东西。它需要一堆文件,并将它们组合成一个压缩文件。具有完全不同的算法。
如果要使用一种工具来统治它们,请全部使用atool
。只需检测格式并调用正确的工具,它将支持一大堆不同的格式。
gzip
压缩算法与所使用的算法相同zip
。区别在于,gzip
压缩任何字节流(包括.tar
文件),而zip
受PKZIP派生和启发的while ,将一步(按该顺序)压缩和存档。
长话短说:tar GNU工具不会通过zip / unzip进行传送,因为没有人在乎。
长话短说,原始大小:
tar
最初并不是要解压缩文件,而是要在一个大文件中归档多个文件。由于人们不仅要存档他们的文件,而且还要对其进行压缩,因此他们只是将tar
输出通过任何接受数据流输入并将结果拖放到文件的压缩器进行管道传输。利润!
现在,为了使此任务尽可能轻松,tar
决定在内部将生成的文件通过管道传输到gzip,lzma等压缩工具,这些文件在运行时会通过每种格式的特殊标志激活tar
。这就是为什么当您尝试通过其提取损坏的文件时tar
,会显示潜在的工具错误而不是tar
s的原因:
$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file
因此,并不是tar
没有解压缩zip文件,而是tar
没有能力通过正确的工具将其管道传输,因为实际上没有人愿意执行它,而zip已经完成了tar文件的文件存档功能格式化tar支持它的理由很少。
现在,有多种工具可以压缩/解压缩您扔给它们的所有内容,同样,您需要有正确的工具来实际支持它。如果没有它们,该工具将失败。
afio
)。
file-roller
...
一个tar
文件本身是一种文件格式,专为磁带归档。然后可以使用(例如)gzip
或bzip2
压缩格式压缩此格式。提取压缩的tar文件时,可以有效地将其解压缩,然后从未压缩的tar
文件中提取原始文件。
提取zip
文件时,其中没有tar
文件,只有所有原始文件。因此,根本没有理由tar
参与该过程。
您也可以使用gzip
或bzip2
单独压缩文件,就像可以创建zip
文件一样(不tar
涉及)。解压缩这些文件时,请使用gunzip
或bunzip2
而不是tar
。
由于“有些事情确实存在,我们应该接受它们”的答案也不适合我,所以我只是做了一些挖掘工作(总是很高兴学习新的东西,对吗?)。
因此,看来问题出在工具的去向及其目的之一。
与其解释我所发现的东西并不必要地使水变得暗淡(混淆让我烦恼),不如看一下这篇文章:http : //www.differencebetween.net/technology/difference-between-zip-and-gzip/
我想tar可以内置zip支持,但是方法显然根本不同。也许他们想知道为什么有人会使用这个存档工具来管理另一个存档和压缩工具中的文件(或者两个原始编码器之间可能存在一些争议,并且有禁止令禁止zip跨越应用程序边界。是的,我在开玩笑。
bsdtar
可以提取.zip
档案:P