合計で約100GBになるかなり小さなファイルが約350,000個あるディレクトリを圧縮する必要があります。私はOSXを使用しており、現在、このディレクトリを.Zipファイルに変換する標準の「圧縮」ツールを使用しています。これを行うより速い方法はありますか?
ディレクトリの場合、tar
をbzip2
にパイプして、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にパイプし、リモートマシンにアーカイブします。
いくつかの参考文献、
Dennis
が言及する MaximumCompression サイトも参照しますこれは guy について調査しました。 .Zipは大きなファイルをより速く圧縮するようです。ただし、最大の圧縮サイズの1つになります。また、彼がWindowsユーティリティを使用していたように見えますが、OSXのユーティリティはほぼ最適化されていると思います。
ここ は、多数のファイルに対する速度について、多数の圧縮ユーティリティがベンチマークされている優れたWebサイトです。そのサイトには他にも多くのテストがあり、最適なユーティリティを決定するために調べることができます。
速度の多くは、使用するプログラムに関係しています。私はWindowsで7Zipのユーティリティを使用しましたが、非常に高速であることがわかりました。ただし、多くのファイルを圧縮する場合は、時間がかかっても時間がかかるため、夜通しで実行します。または、圧縮せずに全体をtarで圧縮することもできます...個人的には大きなアーカイブを解凍するのが嫌いなので、それがあなたがやりたいことであるかどうか注意します。
私は使うことを好む
tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2
ファイルを他のサーバーに移動し、同時にそれらをカバーするため