Zip / 7zip 压缩差异

问题描述 投票:0回答:3

我有许多 zip 文件需要分发给用户,其中大约有 130 个。每个 zip 文件都包含许多类似的文本、html、xml 和 jpg 文件。 zip 文件总共 146 MB;解压后,内容总计 551mb。

我想以尽可能小的格式将所有这些文件一起分发给用户。我研究了两种不同的方法,每种方法都使用两种不同的压缩方案,zip 和 7zip(我理解是 LZMA 或其变体):

  1. 将所有 zip 文件压缩成一个压缩文件并发送该文件(
    single.zip/7z
    )
  2. 将 zip 文件的解压内容压缩为压缩文件并发送该文件 (
    combined.zip/7z
    )

例如,假设我有 3 个 zip 文件,A.zip、B.zip 和 C.zip,每个文件包含 1 个文本文件、1 个 html 文件和 1 个 XML 文件。使用方法 1,将创建一个包含 A.zip、B.zip 和 C.zip 的压缩文件。使用方法 2,将创建一个包含 A.txt、A.html、A.xml、B.txt、B.html、B.xml、C.txt、C.html 和 C.xml 的压缩文件。

我的假设是,在任一压缩方案下,方法 2 生成的文件将更小或至少与方法 1 生成的文件大小相同,因为您可以通过一起考虑所有文件来提高效率。至少,方法 2 可以避免多个 zip 文件的开销。

令人惊讶的结果(7zip工具生成的文件大小)如下:

  1. single.zip - 142mb
  2. 单.7z - 124mb
  3. combined.zip - 149mb
  4. 组合.7z - 38mb

我对 7zip 格式生成的文件比 zip 格式更小(结果 2/4 与结果 1/3)并不感到惊讶,因为它通常比 zip 压缩得更好。令人惊讶的是,对于 zip 格式,将所有 130 个 zip 文件压缩在一起会产生比压缩所有未压缩内容更小的输出文件(结果 3 与结果 1)。

为什么将多个 zip 文件压缩在一起比将其解压缩的内容压缩在一起更有效?

我唯一能想到的是,在压缩过程中,7zip 格式会在所有文件内容中构建一个字典,因此它可以利用文件之间的相似性,而 zip 格式会为每个文件构建字典。这是真的吗?即使这样仍然无法解释为什么结果 3 比结果 1 大 7mb。

感谢您的帮助。

zip 7zip
3个回答
11
投票
  • .zip

    .7z
    都是无损压缩格式。
    .7z
    较新,可能会为您提供更好的压缩比,但它不像
    .zip
    那样得到广泛支持,而且我认为压缩/解压缩的计算成本更高。
    
    

  • 更好的程度取决于您要压缩的文件类型,但根据
  • wikipedia 关于 7zip 的文章

    2011 年,TopTenReviews 发现 7z 压缩比 ZIP 至少好 17%,7-Zip 自己的网站自 2002 年以来就报告说,虽然压缩比结果非常依赖于测试所用的数据,“通常,7- Zip 压缩为 7z 格式比 zip 格式压缩 30–70%,并且 7-Zip 压缩为 zip 格式比大多数其他 zip 兼容程序好 2–10%。”


4
投票
为什么将多个 zip 文件压缩在一起比将其解压缩的内容压缩在一起更有效?

您的假设是正确的:7zip 使用
固体压缩

,而 zip 则不使用。它的工作原理类似于你的字典的想法。通过将不同文件的公共部分组合成一个“块”,从而减小大小。


0
投票

并且它具有普通拉链所缺乏的优点, 即使在“0”又名“仅存储”模式下: 可能有更大的档案,可能有模糊加密(密码保护文件或目录,加密,并且不显示 7z 容器中的内容)。

P.S.:如果您使用 Gmail,请不要尝试发送此类安全存档,因为它不起作用。顺便说一句,大多数类型的加密文件都不会被发送。从谷歌的角度来看,“出于安全原因”。 gmail 用户的观点可能是 Google 想知道用户发送的内容,或者至少让其检测机器人释放邮件或文件中的某些单词,主要是出于商业原因。

© www.soinside.com 2019 - 2024. All rights reserved.