我们应该使用什么压缩格式;我们应该让DEFLATE(.zip)休息吗?

时间:2010-08-28 06:33:52

标签: compression zip gzip 7zip winrar

大多数Linux发行版都放弃gzip和bzip2来支持LZMA2来压缩他们的包,以及许多平台的许多开源实现,我想知道:我们不应该使用DEFLATE和.zip格式(不幸的是得到了)一遍又一遍地顽固地休息,并转而采用其他现代方式分发我们的(源)包裹?

GNU tar支持J开关,它使用xz(另一个LZMA2压缩器)作为过滤器:

$ tar cJf foo.tar.xz foo/

但是,我倾向于使用7z(p7zip实现)和Linux下的朋友7za来创建档案。在创建档案时,我仍然使用“避免tar-bombs”范例,这意味着档案中有一个目录,因此从命令行中提取不会导致当前目录中的文件溢出(这是标准的运作方式在Linux上使用tar之类的东西,但在Windows下它似乎不太可能。)

无论如何,似乎由于在软件包中使用(例如Fedora RPMs和Ubuntu DEB),以及像tar这样的工具的过滤器,LZMA2是后来使用的“下一个最好的东西” bzip2的。它具有很高的压缩率(在标准设置中远远超过bzip2)并且速度非常快(压缩比gzip慢一点,

我自己做了一些基准测试,但是我想在一些更广泛的基准测试中找到一席之地:

现在,您会注意到,作为参考实现的7-zip不会出现在第一位。然而,Freearc使用它自己的.arc格式,这种格式不具备跨平台能力,与80年代的 ARC不兼容。 nanozip不是开源的,这是一种低迷,但这是算法,而不是归档者!

无论如何,现在使用7-zip及其衍生实现(xz)的性能不再是问题,并且压缩率本身就说明了,我觉得我的源包是{{{ 1}}或.7z档案。但是,我面前有两个障碍,我似乎无法接受:

  1. WinRAR的倡导者。 不要误会我的意思,我对WinRAR或其用户没有怨恨,只是我不能在Linux上真正制作RAR,而且没有必要,因为我们有免费的LZMA2工具。正如我所说,自从成为发行包的一个组成部分后,它可以在任何现代发行版中使用。由于制作.tar.xz而不是.7z需要大约相同的时间,而LZMA2文件通常较小,我不明白为什么不使用7-zip。

  2. tar档案必须是zip或bzip2,没有例外。 这很难。为什么有这么多人对gzip印象深刻?甚至bzip2在大多数情况下都没有看到太多用法。当然,gzip很快,对于按需压缩(例如Web服务器)或创建大型镜像备份时,这是一个很好的观点。但是分发软件怎么样? LZMA2 非常不对称。虽然压缩需要时间,但解压缩速度非常快。

  3. 好的,现在我的问题出现了:

    由于LZMA2可以说是下一个更好的压缩算法,为什么人们不会跳上火车呢?为什么人们仍然使用专有的WinRAR,压缩率较差,并且没有移植到Linux(.rar除外,但显然无法创建存档)。为什么Tarball仍然大部分都是gziped?

    如何说服人们继续采用更新,更可靠的归档格式,这不仅是跨平台的,而且是免费的吗?当我给某人一个以unrar结尾的文件时,他们往往不知道如何处理它,这会改变吗?

    哦,这是我自己做的小基准。我到处都使用默认设置:

    .7z

    字节大小;文件名:11837440 GNUtar_TAR.tar 10657984 Arc_ARC.arc 9632524 PA2010_TAR_BZip2.tar.bz2 9536967 PA2010_LHA_Frozen5.lzh 9510148 PA2010_ZIP_BZip2.zipx 9490211 GNUtar_TAR.tar.bz2 9467242 PA2010_LHA_Frozen6.lzh 9463630 7-zip_ZIP_BZip2.zip 9437520 7-zip_7-ZIP_BZip2.7z 9398798 Arj_ARJ.arj 9373435 GNUtar_TAR.tar.gz 9370456 PA2010_BlackHole_Deflate.bh 9369621 Lha_LHA_Frozen6.lzh 9367712 PA2010_ZIP_Deflate.zip 9364237 PA2010_TAR_gzip.tar.gz 9360248 PA2010_Cabinet_MsZip.cab 9303923 7-zip_ZIP_Deflate.zip 9215279 7-zip_ZIP_Deflate64.zip 9189365 PA2010_ZIP_PPMd.zipx 9060663 PA2010_7-ZIP_PPMd.7z 8931280 PA2010_Cabinet_LZX.cab 8847427 7-zip_7-ZIP_PPMd.7z 8803350 PA2010_ZIP_Optimized.zipx 8803350 PA2010_ZIP_Wavpack.zipx 8802850 PA2010_ZIP_LZMA.zipx 5812491 FreeArc_7-ZIP.arc 5789853 7-zip_7-ZIP_LZMA.7z 5789853 PA2010_7-ZIP_LZMA.7z 5789024 GNUtar_TAR.tar.xz 5782637 FreeArc_UHARC.arc 5770969 FreeArc_CCM.arc 5739697 Fp8_5.fp8 5718865 Fp8_8.fp8 5685234 Paq8px_5.paq8px 5677662 Paq8kx_5.paq8kx 5644422 Paq8px_8.paq8px 5609608 Paq8kx_8.paq8kx

    这组filles由包含DOS安装的磁盘映像组成:

    Archiver_Format_Algorithm.Extension

    (字节大小)

1 个答案:

答案 0 :(得分:1)

曾经认为bz2不是tarball的选项。然后有人为GNU Tar添加了一个选项来创建和阅读bz2档案,很快这种格式开始传播。所以答案是:

如果您相信LZMA然后向自由软件基金会提交补丁(包括所有适当的文书工作),那么您将使世界变得更加美好。