16GBフォルダーを圧縮したいのですが、最良の方法は何ですか? tar.gz? tar.bz2 rar? 7z?最初にメソッドで圧縮し、圧縮したアーカイブを新しいフォルダーにコピーしてから、他の方法で再圧縮すると、アーカイブは小さくなりますか? DVDに収める必要があります(出力は8.5GBかもしれませんが、覚えていません)が、「4370 MB」を入れると圧縮ファイルは2.5GBになります。
ところで、Ubuntuのデフォルトの圧縮方法は何ですか?
デフォルトはgz
です。しかし、7z
で最高の結果が得られます。
1.4 Gbのvirtualboxコンテナの結果は次のとおりです。
最高の圧縮– MB単位のサイズ:
7z 493 rar 523 bz2 592 lzh 607 gz 614 Z 614 Zip 614 。 arj 615 lzo 737 Zoo 890
インストール
Sudo apt-get install p7Zip-full
この質問は非常に古いですが、おそらく誰かがこの解決策を有用だと思うでしょう:
rzip
の後にtar
を使用します。最初にディクショナリ方式を使用して900 MBの大きなデータブロックを圧縮し、クリーンアップされたデータをbzip2
に渡します。他の強力な圧縮ツール(bzip2
、lzma
)よりもはるかに高速であり、一部のファイルはbzip2
またはlzma
よりもさらに圧縮されます。
はい、gz
はLinuxのデフォルトの圧縮ツールです。それは高速であり、その古さにもかかわらず、ソースコードのようなテキストファイルを圧縮するのに非常に良い結果をもたらします。もう1つの標準ツールはbzip2
ですが、はるかに遅いです。
追加: lrzipはより新しく、rzipの原則を拡張します。無制限のブロックサイズ、および圧縮方法の選択(LZMA、Bzip2、Gzip、LZO、ZPAQまたはなし)もサポートしています。 LZMAが標準です。バックアップや、他のLinux/BSDユーザーと多くのデータを共有する場合、非常に便利です。
LZMA
を選択します。バイトオーバーヘッドが最も小さく、圧縮率が高くなっています。 ZipとLZMAの比較:PHPコードでseq.txt
の2つのファイルを生成しました
$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桁のデータと1Mbのデータと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のデータのランダムブロックを保持します。
圧縮結果:
圧縮比:
したがって、LZMAは、Zipよりもシーケンシャルデータを0.2%効率的に圧縮しています。
およびランダムデータは、Zipよりも2.8%効率的です。
確かにLZMAが勝ちます!