我做了大量的文件压缩。我压缩的大部分内容只是代码,所以我需要使用无损压缩。我想知道是否有任何东西可以比 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)
对于文件夹,只需更改lrzip
为lrztar
Sté*_*las 50
7zip
与其说是压缩器,不如说是一种压缩器(如 PKZIP)。它可用于 Linux,但它只能在常规文件中创建压缩档案,例如不能压缩流。它无法存储大多数 Unix 文件属性,如所有权、ACL、扩展属性、硬链接......
在 Linux 上,作为压缩器,您可以xz
使用与7zip
(LZMA2)相同的压缩算法。您可以使用它来压缩 tar 档案。
像 forgzip
和一样bzip2
,有一个并行变体pixz
可以利用多个处理器来加速压缩(xz
也可以从版本 5.2.0 开始使用该-T
选项在本地进行)。该pixz
变体还支持索引压缩tar
档案,这意味着它能够提取单个文件而无需从一开始就解压缩文件。
如果无论压缩速度如何,您都在寻求最大程度地减小尺寸,LZMA
这可能是您的最佳选择。
在比较各种压缩时,通常权衡是时间与大小。gzip
倾向于相对较快地压缩和解压缩,同时产生良好的压缩比。bzip2
比gzip
压缩和解压缩时间都慢,但产生更大的压缩比。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
(更新的答案)如果时间不重要,请使用 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)编译它吗?看到这个提示。
Zstandard值得一提。尽管使用默认设置,它的压缩效果不如 xz,但它的压缩和解压缩速度要快得多。当 Arch Linux从 xz 切换到 zstd时,他们报告
我们所有包的包大小合计增加了约 0.8%,但所有包的解压时间都加速了约 1300%
今天我用xz和zstd压缩了同样的684M文本语料。我没有做任何严格的测试,YMMV,但差异如此之大,似乎没有必要:
xz
花了9分36秒将其压缩到71M,解压用了9秒zstd
(默认选项)花了6s压缩到123M,解压<2szstd -9
花了 42 秒将其压缩到 99M,再次解压不到 2 秒。zstd -19
比 xz 慢 12 分 40 秒,但压缩到 70M 更好,并且仍然在 <2 秒内解压。