哪种存档/压缩格式?


8

Zip,Rar,7z,Gzip,BZip2,Tar等。我听说7z是本月的风情,为什么?是最适合所有情况,还是针对特定情况有更好的选择?

还是实际的文件存档器(例如WinZip,WinRar,7Zip等)(相对于格式)会产生更大的影响?

在您的答案中,您可以描述提到的格式使用哪种速度/压缩权衡。

请提供指向任何可支持您答案的经验测试的链接。

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

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

谢谢

Answers:


14

Compress,Gzip,Bzip,Bzip2不能用于存档多个文件。他们只压缩单个文件。为了归档,它们通常与TAR一起使用。TAR的问题在于它没有索引表。仅当您计划恢复整个过程时,这才是好。如果您期望只还原有限数量的选定文件,则不用担心TAR。要获取tar.gztar.bz2归档最新文件,您必须解压缩并处理所有文件。如果是zip,rar或7-zip,它将进入索引表,跳至存档的相关位置,仅处理相关文件。

好的,TAR不在了,所以您只剩下ZIP,RAR和7-ZIP。在这三者中,ZIP是最泛滥的,几乎所有东西都支持它,许多应用程序都具有内置支持。而且速度很快。另一方面,7-ZIP也是可移植的,库是LGPL,并且压缩率比其他两个要好得多,这是因为CPU消耗更多。RAR是真正的失败者,既没有强大的压缩能力,也没有真正的可移植性,也没有速度。

编辑:似乎最好的选择是7-ZIP,但使用bzip2压缩方法。这样,您就不会遇到TAR的缺点,但是您仍然可以利用bzip2多核支持。请参阅本文。


很好的信息,谢谢。在使用Linux的过程中,我曾见过TAR,但从未仔细观察过。
灰烬

我将不得不同意rar。压缩效果很好(与gzip atleast相比),在我的用例中,速度似乎还不错。我喜欢rar的一件事是它可以处理流内容或单个文件,并允许您在文件名中自动添加时间戳...
Dscoduc 2010年

10

推荐阅读:

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

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

我们正在数据库服务器上使用最新的64位版本的7zip(4.64)。我不是台式机双核的忠实拥护者,但是对于服务器却毫不费力。CPU内核越多越好!该服务器有两个四核CPU,共有8个内核,我有点沮丧地发现RAR和7zip似乎都没有多使用2个。

即使7zip算法仅使用2个内核进行压缩,其效果仍然惊人,并且在过去几年中发展迅速。我以前推荐的是Rip而不是Zip,但鉴于7zip的效率不断提高,而且它是免费的,而RAR不是,因此这是现在的合理选择。

关于算法:

为什么bzip2的工作速度比7zip快得多?[...] Bzip2使用两个以上的CPU内核来并行化其工作。


感谢您的链接。我们当然知道杰夫的观点是基于现实生活中的经验!
灰烬

4

这不仅仅涉及效率和速度。当然,它们很重要,您可以查看这些基准并从选项中明智地选择(尽管我建议您使用自己服务器上的数据对自己进行一些简单的基准测试)。但是存档不可避免地会导致再次访问您的数据(否则为什么不删除它呢?)。也许几年以后,您根本就不会访问数据,而是第三方。选择一些您需要访问数据时会遇到的东西以及人们可以识别的东西。我个人使用7zip,但是当我存档文件时,其他人可能需要使用zip。他们知道,很多工具都可以处理。它可能不那么快或不那么小,但是它有助于人为因素。


好点子。该搜索索引将直接从某些压缩文件中提取数据。这就是为什么我感兴趣的是,是否有任何格式提供可配置的压缩/解压缩性能。因此,我更多地关注压缩方面,而不是将来的归档方面。
灰烬

3

lzma在压缩率和速度方面似乎都表现出色。

在以下http://tukaani.org/lzma/benchmarks基准测试中,lzma的最快设置所提供的压缩时间比最快的bzip2选项要快得多,而压缩效果却比最慢的bzip2选项要好:

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

    时间bzip2 lzmash  
    最快1m 26s 0m 58s  
    最慢2m 37s 12m 20s

    *压缩适用于Linux的OpenOffice.org 1.1.4的完整安装(203 MB) 

它对二进制数据的性能特别好,但是我认为我阅读了一些纯文本基准,其中bzip2的性能优于它。

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.

直到上周有人提出我的“服务器故障”问题之一时,我还是没有。它看起来令人印象深刻,如果您将其用于纯文本,则值得对其进行研究。
Guy C

LZMA是7-zip中使用的算法的名称。
vartec

2

看一下这个Wikipedia条目。走向底部,“效率比较”。它将大致为您提供压缩百分比和花费的时间。所有这些数字将根据使用的机器速度,内存大小等(速度)而变化。

更多压缩基准:


谢谢,但是我已经读过了,并认为它有点简短(请参阅问题中的观点)。您是否知道在更多不同情况下进行更详细的测试?

添加了几个链接,希望可以提供更多信息。

2

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

这取决于您要压缩的内容,但是通常7z可以更好地利用多个处理器,并且7z压缩格式本身产生的压缩比zip更高,有时甚至比rar高(尽管rar和7z几乎相等,但是rar不是)不免费...)

几个月前的测试得出了以下结果:

压缩单个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)

压缩一个文件夹,其中包含超过九千个不同类型的文件(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 Duo,2GHz,1GB RAM和便宜的硬盘。

因此,在我测试的两个以上zip以外的情况下,7z的压缩率都有了很大的提高,甚至在rar上也得到了改善,但是7z肯定较慢。并不是很明显,但是值得一提。

-亚当


不错的测试。MDB压缩是巨大的。在测试的100k二进制索引字文件中,我只会得到4比1的结果。我猜这表明使用与系统将要使用的文件/数据相似的测试非常重要。
灰烬

是的,MDB文件全都是绒毛,没有任何实质内容。二进制文件将变得更少(因为它使用全部8位,而文本文件仅使用6位多一点),并且机会很好,其中没有太多重复。测试始终很重要。您可能会更好地使用压缩设置-有时您可以针对使用情况对其进行优化,并且比标准设置所提供的更好。
亚当·戴维斯

0

我刚刚安装了dar(但是还没有机会玩它)。它与使用gzip或bzip2压缩的tar相似,具有将归档文件拆分成多个部分并计算奇偶校验的附加功能,因此,如果一个或多个部分损坏,则可以从奇偶校验文件中重建它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.