最好的压缩方法?

我想压缩一个16GB的文件夹,但最好的方法是什么? tar.gz的? tar.bz2 rar? 7Z? 如果我首先在方法中压缩,然后将压缩的存档复制到新文件夹,然后在其他方法中重新压缩,存档是否会更小? 我需要让它适合DVD(输出可能是8.5GB,不记得)但是“4370 MB”使压缩文件成为2.5GB。

BTW,Ubuntu上的默认压缩方法是什么?

默认值为gz 。 我用7z获得的最好成绩。

以下是1.4 Gb virtualbox容器的结果:

在此处输入图像描述

最佳压缩 – 以MB为单位的大小:

  7z 493
 rar 523
 bz2 592
 lzh 607
 gz 614
 Z 614
邮编614
 .arj 615
 lzo 737
动物园890

资源

在此处输入图像描述

安装

  sudo apt-get install p7zip-full 

这个问题很老了,但也许有人觉得这个解决方案很有用:

tar之后使用rzip 。 它首先使用字典方法压缩900 MB大数据块,然后将清理后的数据传递给bzip2 。 它比其他强大的压缩工具( bzip2lzma )快得多,而且它压缩的一些文件甚至比bzip2lzma更好。

是的, gz是Linux上的默认压缩工具。 它很快,尽管它的年龄很长,它在压缩文本文件(如源代码)方面仍然提供了非常好的结果。 另一个标准工具是bzip2 ,虽然速度要慢得多。

另外: lrzip更新,扩展了rzip的原理。 它甚至支持无限大小的块,以及压缩方法的选择(LZMA,Bzip2,Gzip,LZO,ZPAQ或无)。 LZMA是标准。 对于备份或如果您与其他Linux / BSD用户共享大量数据,它可以非常方便。

我选择LZMA 。 它具有最小的字节开销并具有强大的压缩比。 ZIP和LZMA之间的比较:我用PHP代码生成了两个文件seq.txt

 $s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str); 

它包含0..9位rnd.txt数据的重复块和带有PHP代码的rnd.txt

 $s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str); 

它保存0..9位~1Mb数据的随机块。

压缩结果:

  • seq.txt,rnd.txt - 1100000字节
  • seq.txt.zip - 2502个字节
  • rnd.txt.zip - 515957个字节
  • seq.txt.lzma - 257个字节
  • rnd.txt.lzma - 484939字节

压缩率:

  • ZIP - >“seq.txt” - > 99.772%
  • ZIP - >“rnd.txt” - > 53.094%
  • LZMA - >“seq.txt” - > 99.976%
  • LZMA - >“rnd.txt” - > 55.914%

因此,LZMA比ZIP更有效地压缩了序列数据0.2%
和随机数据比ZIP更有效2.8%。

肯定LZMA赢了!