哪种 l​​inux 文件压缩软件可以最大程度地减少文件大小?

Zac*_*ach 67 compression

我做了大量的文件压缩。我压缩的大部分内容只是代码,所以我需要使用无损压缩。我想知道是否有任何东西可以比 7zip 更好地缩小尺寸。压缩或解压缩需要多长时间并不重要,大小才是最重要的。有没有人知道Linux中有这样的软件?还是 7zip 最好?

小智 86

lrzip是您真正需要的,尤其是在您压缩源代码时!

引用自述文件:

这是一个针对大文件优化的压缩程序。文件越大,您拥有的内存越多,这将提供更好的压缩优势,尤其是当文件大于 100MB 时。可以选择大小(比 bzip2 小得多)或速度(比 bzip2 快得多)的优势。[...] lrzip 的独特之处在于,它始终试图充分利用系统中的可用内存,以获得最大收益。

lrzip 的工作原理是首先使用基于 rzip 的算法扫描并删除任何长距离数据冗余,然后压缩非冗余数据。

Con Kolivas在 Linux 内核邮件列表中提供了一个很好的例子;其中,他将40 个Linux 内核版本的 10.3GB tarball 压缩到 163.9MB (1.6%),并且比 xz 快。他甚至没有使用最激进的二次通过算法!

我相信你会在压缩大量源代码的 tarball 时获得很好的结果:)

sudo apt-get install lrzip
Run Code Online (Sandbox Code Playgroud)

示例(其他选项使用默认值):

超压缩,狗慢:

lrzip -z file
Run Code Online (Sandbox Code Playgroud)

对于文件夹,只需更改lrziplrztar

  • 我已经在 19 GB 的文本文件上尝试过 `lrzip` 和 `pixz`。两者都花了大约半个小时来压缩它(在六核机器上),但 `lrz` 文件的大小是 `xz` 文件的一半(2.7 对 4.4 GB)。所以,另一个投票给这个答案。 (11认同)
  • @Franki 所说的“竞赛”,您的意思是“证明”吗? (3认同)
  • 感觉像Pied Piper! (2认同)

Sté*_*las 50

7zip与其说是压缩器,不如说是一种压缩器(如 PKZIP)。它可用于 Linux,但它只能在常规文件中创建压缩档案,例如不能压缩流。它无法存储大多数 Unix 文件属性,如所有权、ACL、扩展属性、硬链接......

在 Linux 上,作为压缩器,您可以xz使用与7zip(LZMA2)相同的压缩算法。您可以使用它来压缩 tar 档案。

像 forgzip和一样bzip2,有一个并行变体pixz可以利用多个处理器来加速压缩(xz也可以从版本 5.2.0 开始使用该-T选项在本地进行)。该pixz变体还支持索引压缩tar档案,这意味着它能够提取单个文件而无需从一开始就解压缩文件。

  • 您能否详细说明您在这里所做的“压缩器”和“压缩器”之间的区别? (9认同)
  • 也许这是一个DOS的东西?在 Unix 中,压缩和 *归档* 之间的区别很常见(正如您所说),但我从未听说过“压缩器”。 (8认同)
  • @mattdm,一个压缩器只压缩,一个压缩器将几个东西压缩成一个压缩档案。 (5认同)
  • @mattdm,好吧,压缩是归档+压缩(可能带有索引,可能成员单独压缩),归档并不意味着压缩。它不是 DOS 的东西,但可能是法国的东西。谷歌搜索 usenet 档案,我似乎只遇到我的文章,所以它很可能是我的发明,尽管我坚信它不是。 (3认同)
  • @mattdm,奇怪。在 90 年代,这是一个非常常见的术语和区别,从谷歌搜索来看,情况不再如此。 (2认同)

j88*_*376 6

如果无论压缩速度如何,您都在寻求最大程度地减小尺寸,LZMA这可能是您的最佳选择。

在比较各种压缩时,通常权衡是时间与大小。gzip倾向于相对较快地压缩和解压缩,同时产生良好的压缩比。bzip2gzip压缩和解压缩时间都慢,但产生更大的压缩比。LZMA具有最长的压缩时间,但产生最佳比率,同时还具有优于bzip2.

资料来源:http : //bashitout.com/2009/08/30/Linux-Compression-Comparison-GZIP-vs-BZIP2-vs-LZMA-vs-ZIP-vs-Compress.html

http://tukaani.org/lzma/benchmarks.html


Aqu*_*wer 5

(更新的答案)如果时间不重要,请使用 ZPAQ v1.10(或更新版本)例如:
zpaq pvc/usr/share/doc/zpaq/examples/max.cfg file.zpaq file.tar (max.cfg 文件位置可能会有所不同,请检查您安装的软件包文件列表)

zpaq实际上压缩了不止kgb -9 newFileName.kgb yourFileName.tar
这是基于较旧的算法PAQ6,并且非常慢......
我测试了所有其他压缩器,如 7zip、lrzip、bzip2、kgb ......和 ​​zpaq 压缩最多!

如果kgb您仍然感兴趣:(因为这是我对这个答案的最初选择,所以我将信息保留在这里)
Ubuntu 14.04 有kgb 1.0b4,运行sudo apt-get install kgb以安装它。

下面是一个 Windows 版本,你可以尝试kgb在 linux 上运行/编译,但我没有成功。
可以在SourceForge 上找到版本 2 beta2 ,但没有可用的 Linux 二进制文件。您可以尝试在控制台中运行它wine kgb2_console.exe -a7 -m9(该方法-a6 -m9似乎相当于 1.0b4 中的最佳方法,-a7是 2 beta2 中的新方法)。虽然我通过使用winetricks安装 .NET 2.0并运行获得了更好的稳定性wine "KGB Archiver 2 .net.exe"(我不喜欢这样做,所以我将坚持使用与 2 beta2 具有几乎相同结果的本机 Linux 1.0b4)。
无论如何,版本 2 beta2 也值得一个 Linux 原生版本!也许可以使用 MinGW 完成某些事情,请参阅此内容,但此命令仍然严重失败:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb. 可以尝试用dmcs(Mono)编译它吗?看到这个提示


unh*_*mer 5

Zstandard值得一提。尽管使用默认设置,它的压缩效果不如 xz,但它的压缩和解压缩速度要快得多。当 Arch Linux从 xz 切换到 zstd时,他们报告

我们所有包的包大小合计增加了约 0.8%,但所有包的解压时间都加速了约 1300%

今天我用xz和zstd压缩了同样的684M文本语料。我没有做任何严格的测试,YMMV,但差异如此之大,似乎没有必要:

  • xz花了9分36秒将其压缩到71M,解压用了9秒
  • zstd(默认选项)花了6s压缩到123M,解压<2s
  • zstd -9花了 42 秒将其压缩到 99M,再次解压不到 2 秒。
  • zstd -19比 xz 慢 12 分 40 秒,但压缩到 70M 更好,并且仍然在 <2 秒内解压。