web-dev-qa-db-ja.com

多数のファイルの最速の圧縮方法は何ですか?

合計で約100GBになるかなり小さなファイルが約350,000個あるディレクトリを圧縮する必要があります。私はOSXを使用しており、現在、このディレクトリを.Zipファイルに変換する標準の「圧縮」ツールを使用しています。これを行うより速い方法はありますか?

14
Spike

ディレクトリの場合、tarbzip2にパイプして、max-compressionで使用します。

簡単な方法は、

 tar cfj archive.tar.bz2 dir-to-be-archived/

これは、アーカイブから小さなファイルセットをフェッチするつもりがない場合に最適です。
そして、必要なときにいつでもどこでもすべてを抽出することを計画しています。
まだ、あなたがdoでファイルの小さなセットを取得したい場合は、それほど悪くはありません。

私はそのようなアーカイブをfilename.tar.bz2と呼び、 'xfj'オプションで抽出することを好みます。

最大圧縮パイプは次のようになります。

 tar cf-dir-to-be-archived/| bzip2 -9-> archive.tar.bz2 
#^ここからzip形式でtarballをアーカイブファイルにパイプします。 

注:「bzip2」メソッドを使用して圧縮を行うと、「tar cfz」の通常のgzipよりも圧縮が遅くなる傾向があります。

高速ネットワークがあり、アーカイブが別のマシンに配置される場合は、
ネットワーク全体でパイプを使用してスピードを上げることができます(2台のマシンを効果的に併用します)。

 tar cf-dir/| ssh user @ server "bzip2 -9-> /target-path/archive.tar.bz2" 
#^ tarballをネットワーク経由でZipにパイプし、リモートマシンにアーカイブします。

いくつかの参考文献、

  1. Linux Journal: 比較された圧縮ツール 、2005年7月28日
  2. gzip vs. bzip2 、2003年8月26日
  3. クイックベンチマーク:Gzip対Bzip2対LZMA 、2005年5月31日
15
nik

これは guy について調査しました。 .Zipは大きなファイルをより速く圧縮するようです。ただし、最大の圧縮サイズの1つになります。また、彼がWindowsユーティリティを使用していたように見えますが、OSXのユーティリティはほぼ最適化されていると思います。

ここ は、多数のファイルに対する速度について、多数の圧縮ユーティリティがベンチマークされている優れたWebサイトです。そのサイトには他にも多くのテストがあり、最適なユーティリティを決定するために調べることができます。

速度の多くは、使用するプログラムに関係しています。私はWindowsで7Zipのユーティリティを使用しましたが、非常に高速であることがわかりました。ただし、多くのファイルを圧縮する場合は、時間がかかっても時間がかかるため、夜通しで実行します。または、圧縮せずに全体をtarで圧縮することもできます...個人的には大きなアーカイブを解凍するのが嫌いなので、それがあなたがやりたいことであるかどうか注意します。

7
Dennis

私は使うことを好む

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

ファイルを他のサーバーに移動し、同時にそれらをカバーするため

0
oussama fahd