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

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

总体来说,我观察到以下情况:

  • Linux-y 文件或工具使用bzip2或者压缩用于分发档案
  • Windows-y 文件或工具使用 ZIP 分发档案
  • 许多人使用7-Zip创建和分发自己的档案

问题:

  • 这些格式似乎都是开放格式,但它们的优缺点是什么?我什么时候/为什么应该选择其中一种(例如 7-Zip)而不是另一种(例如 ZIP)?
  • 为什么尽管所有这些都是可移植格式,上述趋势似乎仍然成立?在特定平台上使用特定存档格式有什么特别的优势吗?

答案1

有各种各样的压缩格式和方法可用,有些根本不压缩,旨在将多个文件存储在一个档案中,而其他较新的实验性压缩器(帕金森病问卷基于网络的压缩旨在尽可能地进行压缩,而不管执行该操作需要多长时间。

您需要评估所选压缩方法所需的特性,并考虑其使用环境。

不同的特点和考虑因素包括:

  • 抗压能力- 它是否可以显著地缩小文件大小?
  • 使用方便- 如果该文件要发送给另一个用户,那么档案是否容易提取,还是需要安装更多软件?
  • 密码保护和/或加密- 这些安全措施是必需的吗?
  • 支持多个卷- 如果目标介质要求将文件分割成适当的块,格式是否能很好地支持这一点。例如,CD 为 650 MB。
  • 修复和恢复- 如果文件部分损坏,它是否提供恢复记录来帮助恢复数据?
  • Unicode 支持- 归档器是否支持国际文件名或仅支持标准 ASCII?
  • 系统要求- 现代压缩机,如7-Zip确实可以通过使用更大的字典(字典是压缩文件中常见重复数据的引用)来提高压缩效率,但这反过来会增加压缩和解压缩时的内存消耗。
  • 自提取支持- 档案是否可以转成可执行文件,方便任何需要使用它的人使用?(另请记住,您只能为单个平台创建自解压程序。一般来说,Windows 自解压程序默认不会在 Linux 上运行,除非通过 Wine 等兼容层运行)。
  • 文件系统属性- 压缩器是否存储在提取时值得保留的相关文件系统元数据和权限?

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

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

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

答案2

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

答案3

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

  • .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-Zip。

答案4

仅作为示例,我在以下情况下使用上述格式:

  • 文本文件(尤其是日志):bz2
  • 要分发的文件集合(例如源代码):gz(实际上是 tar.gz)。
  • 各类文件:7zip。我可以用非常高效的方式压缩几乎任何东西。跨平台、开源、稳定、轻量级、文件(标头和数据)加密……您还能要求什么呢?:)

我避免使用 RAR总之,每当我从认识的人那里收到 RAR 文件时,我都会告诉他/她停止使用该格式,因为它是专有的,并且他/她可能正在使用未经授权的软件(大多数人下载 WinRAR 的试用版并一直使用它)。

附言:我运行 Ubuntu(主要)和 Windows(双启动和 VirtualBox)。

相关内容