我进行了大量的文件压缩。我压缩的大部分内容只是代码,所以我需要使用无损压缩。
我想知道是否有任何东西可以比 7zip 提供更好的尺寸减小效果。压缩或解压缩需要多长时间并不重要;尺寸才是最重要的。
有谁知道 Linux 中可用的各种工具和压缩算法在压缩文本方面的比较如何?或者 7zip 是压缩源代码的最佳选择吗?
答案1
压缩包就是你真的寻找,尤其如果您要压缩源代码!
引用自述文件:
这是针对大文件优化的压缩程序。文件越大,内存越多,压缩优势就越大,特别是当文件大于 100MB 时。优势可以选择为大小(比 bzip2 小得多)或速度(比 bzip2 快得多)。 [...]lrzip 的独特功能是它始终尝试充分利用系统中的可用 RAM 以获得最大收益。
lrzip 的工作原理是首先使用基于 rzip 的算法扫描并删除任何长距离数据冗余,然后压缩非冗余数据。
康科利瓦斯提供Linux 内核邮件列表中的一个很棒的例子;其中他压缩了一个 10.3GB 的 tarball四十Linux 内核版本降至 163.9MB (1.6%),并且比 xz 更快。他甚至没有使用最激进的第二遍算法!
我确信压缩大量源代码 tarball 会得到很好的结果:)
sudo apt-get install lrzip
示例(对其他选项使用默认值):
超压缩,狗慢:
lrzip -z file
对于文件夹,只需更改lrzip
为lrztar
答案2
7zip
与其说它是一个压缩器,不如说它是一个压缩器(如 PKZIP)。它可用于 Linux,但它只能在常规文件中创建压缩档案,例如它无法压缩流。它无法存储大多数 Unix 文件属性,例如所有权、ACL、扩展属性、硬链接......
在 Linux 上,作为压缩机,您已经使用与(LZMA2)xz
相同的压缩算法。7zip
您可以使用它来压缩 tar 档案。
就像 和gzip
一样bzip2
,有一个平行线pixz
可以利用多个处理器来加速压缩的变体(xz
也可以从 5.2.0 版本开始使用该选项本地执行此-T
操作)。该pixz
变体还支持索引压缩tar
存档,这意味着它能够提取单个文件,而无需从头开始解压缩文件。
脚注
紧凑是归档+压缩(可能带有索引,可能成员单独压缩),归档并不意味着压缩。这不是 DOS 的东西,但可能是法国的东西。在谷歌上搜索 usenet 档案,我似乎只看到了我的文章,所以它很可能是我的发明,尽管我坚信它不是。
答案3
(更新的答案)如果时间不重要,请使用 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 有克格勃1.0b4,运行sudo apt-get install kgb
安装它。
下面是关于一个windows版本,你可以尝试kgb
在linux上运行/编译,但我没有成功。
版本 2 beta2 可以在以下位置找到来源锻造,但没有可用的 Linux 二进制文件。你可以尝试在控制台中运行它wine kgb2_console.exe -a7 -m9
(方法-a6 -m9
似乎相当于1.0b4中最好的方法,-a7
是2 beta2中的新方法)。虽然我通过安装 .NET 2.0 获得了更好的稳定性葡萄酒技巧并运行wine "KGB Archiver 2 .net.exe"
(我不喜欢这样做,所以我会坚持使用原生 Linux 1.0b4,它的结果与 2 beta2 几乎相同)。
不管怎样,版本 2 beta2 也确实值得一个 Linux 原生版本!也许可以用 MinGW 来完成一些事情,请参阅这,但是这个命令仍然严重失败:i586-mingw32msvc-g++ kgb2_console.cpp -o kgb
。可以尝试用dmcs
(Mono)编译它吗?看这个提示。
答案4
Z标准值得一提。尽管使用默认设置,它的压缩效果不如 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 秒内解压。