哪种归档/压缩格式?

拉链,拉尔,7z,Gzip,BZip2,焦油等我听说7z是本月的味道,为什么? 对所有情况来说都是最好的,还是在特定情况下有更好的select。

或者,也许实际的文件存档器WinZip,WinRar,7Zip等(而不是格式)有更大的影响?

在你的回答中,你能描述一下你提到的格式使用什么样的速度/压缩折衷。

请提供链接到支持您的答案的任何实证testing。

背景:我需要备份一个自定义的search索引,创build大约3000个相对较小的文件(小于10MB),每个包含大量的重复数据。

(像往常一样维基百科有一篇相关的文章,但是关于性能比较的部分很简短。)

谢谢

压缩,Gzip,Bzip,Bzip2不适用于归档多个文件。 他们只压缩单个文件。 对于归档,他们通常与TAR一起使用。 TAR的问题是它没有索引表 。 如果你打算恢复整个事情,那就好了。 如果您希望只需要还原有限数量的选定文件,请忘记TAR。 要从tar.gztar.bz2存档中获取最后一个文件,您必须解压缩并处理所有文件 。 在zip,rar或7-zip的情况下,它将进入索引表,跳到档案的相关位置,只处理相关文件。

好吧,TAR出来了,这样就给你留下了ZIP,RAR和7-ZIP。 在这三个中,ZIP是最为激增的,大部分都支持它,许多应用程序都内置了支持。 而且速度很快。 另一方面,7-ZIP也是可移植的,图书馆是LGPL,并且压缩率比另外两个好得多,这是成本更高的CPU消耗。 RAR是真正的失败者,既不是很大的压缩,也不是真正的便携式,也不是很快。

编辑:似乎最好的select将是7-ZIP,但与bzip2压缩方法。 这样你就不会有TAR的缺点,但是你仍然可以利用bzip2的多核心支持。 看到这篇文章。

推荐阅读:

多核时代的文件压缩 (Jeff Atwood aka CodingHorror,2009年2月)

我一直在玩文件压缩,因为我们每天在Stack Overflow上生成一些非常大的备份文件。

我们在数据库服务器上使用最新的64位版本的7zip(4.64)。 我不是桌面上的双核以上的超级粉丝,但是对于服务器来说,这并不是一件容易的事情。 越多的CPU核心越高! 这个服务器有两个四核CPU,总共有8个核心,我有点沮丧地发现,RAR和7zip似乎都不能使用超过2个。

尽pipe如此,即使只使用2个核心进行压缩,7zipalgorithm也是非常有效的,并且在过去几年中已经发展得相当快。 我曾经推荐使用RAR而不是Zip,但是考虑到7zip的效率提高了,而且它是免费的,而RAR则不是,所以现在是合理的select。

而关于algorithm:

为什么bzip2能够比7zip快得多? Bzip2使用两个以上的CPU内核来并行工作。

这不全是关于效率和速度的。 当然他们很重要,你可以看看那些基准,并从选项中明智地select(尽pipe我build议你自己的一些简单的基准testing与自己的服务器上的数据)。 但是,归档不可避免地会导致再次访问数据(否则为什么不删除它?)。 或者,也许几年以后,根本不会访问数据,而是第三方。 当你需要访问数据和人们认识的东西时,select一些将要出现的东西。 我个人使用7zip,但是当我存档其他人可能需要的文件时,我使用zip。 他们知道,很多工具可以处理它。 它可能不是那么快或者很小,但是它有助于人为因素。

lzma在压缩比和速度方面performance都非常好。

在下面的http://tukaani.org/lzma/benchmarks基准testing中,lzma的最快设置给出的压缩时间比最快的bzip2选项快得多,同时仍然比最慢的bzip2选项提供更好的压缩:

    比率bzip2 lzmash
    最快35.8%31.7%       
    最慢34.0%25.4%

    时间bzip2 lzmash  
    最快1米26秒0分58秒  
    最慢2分37秒12分20秒

     *压缩完整安装OpenOffice.org 1.1.4 for Linux(203 MB) 

它对二进制数据performance特别好,但我想我读了一些纯文本的基准,其中bzip2的performance优于它。

lzma手册页值得一读:

  lzma provides notably better compression ratio than bzip2 especially with files having other than plain text content. The other advantage of lzma is fast decompression which is many times quicker than bzip2. The major disadvantage is that achieving the highest compression ratios requires extensive amount of system resources, both CPU time and RAM. Also software to handle LZMA compressed files is not installed by default on most distributions. 

看看这个维基百科条目 。 走向底层,“效率比较”。 它会给你压缩比例,并花费大约时间。 所有这些数字将根据所使用的机器的速度,内存的数量等(速度方面)而变化。

更多压缩基准:

  • 最大压缩 。
  • 无损数据压缩基准 。

比较zip,7z,rar和两种情况

这取决于你正在压缩的是什么,但总的来说7z更好地利用了多个处理器,而7z压缩格式本身产生的压缩比zip更高,有时甚至比rar更高(尽piperar和7z几乎相当,没有免费…)

几个月前我的testing给了这些结果:

压缩一个10MB的访问数据库文件:

 Database.mdb 17,240,064 (original) Database.zip 1,634,794 (Regular zip, 11:1) Database.rar 262,212 (RAR compression, 66:1) Database.7z 195,678 (7-zip compression, 88:1) 

压缩一个包含9000多个不同types文件(903,488KB)的文件夹,并获得以下内容(这是开发软件的源代码和所有工具的组合):

 Type Time Size (KB) Compression ZIP 7:28 247,529 3.7:1 RAR 8:15 222,232 4.1:1 7z 10:49 181,633 5.0:1 

出于时间目的,这是一个Core2的双核,2GHz的,1GB的RAM和一个便宜的硬盘驱动器。

所以7z在压缩率方面有了实质性的提高,在我testing过的两种情况下超出zip,甚至在rar上有所提高,但是7z肯定比较慢。 没有那么显着,但足以被指出。

-亚当

我刚安装了dar (但还没有机会玩呢)。 它与使用gzip或bzip2压缩的tar类似,具有将存档拆分为多个部分的附加function,并计算奇偶校验,以便在一个或多个部分损坏时,可以从奇偶校验文件重新构build。