如何评估压缩文件的最佳存档格式选择?

use*_*686 25 compression zip gzip archiving 7-zip

一般来说,我观察到以下几点:

  • Linux-y 文件或工具使用bzip2gzip来分发档案
  • Windows-y 文件或工具使用 ZIP 分发档案
  • 许多人使用7-Zip来创建和分发他们自己的档案

问题:

  • 这些格式的优缺点是什么,所有这些似乎都是开放格式?何时/为什么我应该选择一个(例如 7-Zip)而不是另一个(例如 ZIP)?
  • 即使所有这些都是便携式格式,为什么上述趋势似乎仍然存在?在特定平台上使用特定存档格式有什么特别的优势吗?

Rua*_*lam 16

有多种压缩格式和方法可用,有些根本不压缩,旨在将多个文件存储在一个存档中,而其他较新的实验性压缩器(基于PAQ)旨在尽可能积极地压缩,无论执行所述操作所需的时间。

您需要从您选择的压缩方法中评估您需要的功能,还需要考虑使用它的上下文。

不同的功能和注意事项包括:

  • 压缩能力- 它是否足够显着地缩小文件?
  • 易于使用- 如果文件要交给另一个用户,存档是否容易提取,还是需要安装更多软件?
  • 密码保护和/或加密- 是否需要这些安全措施?
  • 多卷支持- 如果目标媒体需要将文件拆分为适当的块,格式是否优雅地支持这一点。例如,一张 CD 为 650 MB。
  • 修复和恢复- 如果文件部分损坏,它是否提供恢复记录以帮助恢复数据?
  • Unicode 支持- 存档器支持国际文件名还是仅支持标准 ASCII?
  • 系统要求- 7-Zip等现代压缩器确实提供了通过使用更大的字典来提高压缩效率的能力(字典是压缩文件中常见重复数据的参考),但这反过来会增加压缩和减压时间。
  • 自解压支持- 可以将存档卷成一个可执行文件,以便任何需要使用它的人都可以轻松使用吗?(还要记住,您只能为单个平台创建自解压器。一般来说,Windows 自解压器默认不会在 Linux 上运行,除非通过像 Wine 这样的兼容层运行)。
  • 文件系统属性- 压缩器是否存储在提取时值得保留的相关文件系统元数据和权限?

一般来说,ZIP是最普遍的格式,但通常不支持超过 4 GB 的大小(如果有的话),安全支持通常被认为很差(标准密码可能会受到纯文本攻击的影响,进一步加密是通常由商业 ZIP 软件供应商实施为格式的非官方衍生品)。

除此之外,通过安装更多软件,大多数其他流行格式将在所有操作系统上获得某种形式的支持。

我个人的选择是7-Zip,因为它具有强大而灵活的压缩功能;尽管它在 Windows 上有一个特殊的用户界面。有适用于 Linux 和 Mac OS X 的解压缩器(虽然不是基于 GUI 的标准)。

  • 如果存档用于分发,那么考虑您的目标受众并使用其平台默认支持的格式也很重要。在这种情况下,可访问性可能比其他考虑因素更重要。 (3认同)

小智 8

我想到的一件事是 Jeff Atwood 的(两年前)博客文章:多核时代的文件压缩。在那篇文章中,他发现在运行两个以上的内核时,bzip2 的性能优于 7-zip。

  • 那个帖子已经2年多了。7-zip 现在不是在两个以上的内核上工作得更好吗? (2认同)

小智 5

正如其他人所提到的,特定压缩格式的选择在很大程度上取决于用途和目标受众。

  • .tar.gz 和 tar.bz2 归档文件非常适合在 Linux 系统上使用(以及与 Linux 用户共享文件的扩展),因为 tar、gzip 和 bzip2 工具在该平台上基本上无处不在,并且因为 .tar 格式具有完整的支持 Unix 权限和其他特定于平台的属性。选择 gzip 和 bzip2 来压缩 tar 存档主要是速度与压缩比的决定,bzip2 提供较小的文件,但压缩速度慢得多。这些格式的缺点包括与 Windows 的兼容性较差,并且(可能)需要解压缩整个存档以提取单个文件。

  • ZIP 存档可以在大多数平台上使用本机工具进行提取,因此它是将存档发送给不喜欢安装第三方存档软件(例如 7-Zip)的非技术用户的理想选择。压缩级别不如更高级的算法,并且不支持 Unix 权限,但例如,如果您想将假日照片存档发送给祖母,那么它是一种出色的格式。ZIP 还提供一些基本的密码保护,并且可以从存档中的任何位置快速提取文件。

  • 如果您想要尽可能最佳的压缩比,7-Zip 是不错的选择。与 ZIP 一样,它不支持 Unix 文件权限或所有权,并且默认情况下也不会安装在大多数平台上,这使得使用起来稍微费力,但如果压缩比增益很重要,那么在 Windows 上可能是值得的。在全 Linux 环境中,最好将“xz”或“lzma”压缩工具与 tar 一起使用,它们的操作方式与“gzip”和“bzip2”完全相同,但使用更高级的 LZMA 算法,如 7 -压缩。