zip缩小0%?为什么没有压缩?

时间:2012-11-09 13:29:54

标签: linux unix compression zip command

我正在尝试压缩包含4个大文件的文件夹的内容,非常非常相似。所以我希望减小尺寸。

这是我在linux / fedora上使用的命令:

zip -9 myarchive.zip -r myfolder -P mypassword

我收到回复:

adding: myfolder/ (stored 0%)
adding: myfolder/Program1.exe (deflated 0%)
adding: myfolder/Program2.exe (deflated 0%)
adding: myfolder/Program3.exe (deflated 0%)
adding: myfolder/Program4.exe (deflated 0%)

然后我得到了存档,这与我原始文件夹的大小差不多。

似乎根本没有发生压缩。为什么呢?

4 个答案:

答案 0 :(得分:10)

tar + gzip不同,zip为每个文件使用新的压缩表,因此即使这四个文件相同,也会尝试单独压缩每个文件。

从技术上讲,tar也会看到每个文件,但它会将它们组合成一个gzip的长输入,因此压缩步骤适用于一个巨大的输入,这就是为什么tar + {{ 1}}通常会产生比gzip更小的结果。

问题是无法压缩zip个文件的原因。 exe文件通常包含大量易于压缩的数据,因此它们应该缩小(“缩小”)至少30%。也许文件是加密或混淆的;这些过程使得结果难以压缩。

答案 1 :(得分:3)

亚伦是对的。根据{{​​1}},Wikipedia格式在归档之前会进行压缩,因此不同文件之间的相似性无助于压缩。

您是否真的想压缩ZIP个文件?不知何故,我怀疑这是你的实际文件类型。

请参阅http://en.wikipedia.org/wiki/ZIP_(file_format)#Advantages_and_disadvantages

答案 2 :(得分:3)

缩小0%意味着它确实尝试压缩,但实际上没有压缩。如上所述,zip格式不能利用不同条目之间的相似性。 tar + gzip可以,但即使这样,只有相似之处最终相互之间的距离小于32K字节。其他格式可以利用更长距离的相似性,例如xz。

未压缩的可执行文件压缩30%到50%是正常的,这意味着您的可执行文件要么a)被UPX压缩,b)它们是自解压缩的压缩数据,其中解压缩器存储在压缩数据之前,c)它们是具有大量压缩数据的非常短的可执行文件,或者d)它们大多是加密的。

答案 3 :(得分:2)

某些文件无法压缩,特别是如果它们的熵很高。当字节的统计分布是偶数时(例如,当字节0与字节1一样出现时,字节2出现...),就会发生这种情况。对于已压缩的内容会发生这种情某些视频或音频格式属于该类别。