我想大多数的格式(的gzip等)提取与一个zip文件tar
,当我变得沮丧,足以谷歌吧,我发现没有办法来提取一个zip文件与tar
和只建议使用zip
或unzip
。事实上,我的 Linux 系统甚至没有zip
实用程序,只有unzip
(让我想知道为什么这是主要的推荐选项)。当然unzip
有效,解决了我的问题,但为什么不能tar
解压 zip 文件?也许我应该问,zip 和支持的压缩方法有什么区别tar
?
mic*_*has 43
UNIX 哲学是拥有小工具。一个工具只做一件事,但这特别好。
该tar
工具只是将几个文件组合成一个文件,没有任何压缩。
该gzip
工具只是压缩单个文件。
如果您想同时拥有这两个工具,只需将这两个工具组合在一起即可生成一个.tar.gz
文件。
该zip
工具是一个完全不同的事情。它需要一堆文件并将它们组合成一个压缩文件。使用完全不同的算法。
如果您想要一种工具来统治它们,请使用atool
. 只需检测格式并调用正确的工具,它将支持一大堆不同的格式。
Bra*_*iam 16
长话短说: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
Run Code Online (Sandbox Code Playgroud)
所以,tar
并不是不解压缩 zip 文件,只是tar
没有能力通过正确的工具将其通过管道传输,因为实际上没有人费心去实现它,而 zip 已经完成了 tar 文件的文件归档功能格式 tar 支持它的理由较少。
现在,有多合一的工具可以压缩/解压缩你扔给它们的所有东西,同样,你需要有正确的工具来实际支持它。如果您没有它们,该工具将失败。