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


14

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


それを可能にする特定のオプションがなければ、実際には圧縮せず、アーカイブのみを行うため、おそらくtarに勝るものはありません。答えに、私は証拠なしの意見...見てみたい
ダニエル・ベック

1
どの程度の圧縮が必要かによって異なります。
ta.speot.is

1
最終的にはtarを使用しましたが、速度上の理由から、まだ圧縮を試みていませんでした。必要な時間に間に合うように完了できました。ありがとう!
スパイク

@ DanielBeck、tarの問題は、ディレクトリツリーが表示されないことです。そのため、「ビュー」を取得するためにも、そのtar全体を解凍する必要があります。ディレクトリビューを表示するtarの代替手段はありますか?
Pacerier

回答:


15

ディレクトリの場合、max-compressionでtarパイプされたものbzip2を使用します。

簡単な方法は、

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

これは、アーカイブから小さなファイルセットを取得するつもりがなく
、必要なときにいつでもどこでも全体を抽出することを計画している場合に、うまく機能します。
しかし、あなたがあればやるのも悪くない、ファイルの小さなセットを取得したいです。

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

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

tar cf-アーカイブされるディレクトリ/ | bzip2 -9-> archive.tar.bz2  
#^ここからtarballを圧縮してアーカイブファイルにzip-in ^します。 

注: ' bzip2'メソッドおよびより多くの圧縮はgzip、 ' tar cfz' からの通常よりも遅くなる傾向があります。

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

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

いくつかの参照、

  1. Linux Journal:圧縮ツールの比較、2005年7月28日
  2. gzipとbzip2、2003年8月26日
  3. 簡単なベンチマーク:Gzip vs. Bzip2 vs. LZMA、2005年5月31日

2
質問者は最速の方法を求めました。100Gbのtarをbzipするのは一生かかるでしょう!ディスクスペースが非常に安価であるため、絶対に必要な場合を除き、冗長性の最後の可能なビットをすべて絞り出すためにリソースを無駄に浪費するだけです。ほとんどのディスク使用量がスラックスペースで占められているため、tarを-1でgzip圧縮すると、おそらく十分にジョブが実行され、数か月前に次のタスクに進むことができます!
アンディリーロビンソン

100GBのファイルはおそらく全体を圧縮する価値がないことに同意しますが、bzip2が1GB(たとえば)に比べて100GBの場合に直線的に時間がかかるとは思いません。どちらかの方法を示すために、いくつかの理論やデータを見たいと思います。
ニック

bzip2の辞書は適応性があるため、ファイルの最後まで検索ウィンドウ内で新しい冗長性を常に探していることを理解しています。ファイルのエントロピーの均一性を前提として、比較的線形である必要があります。ファイルの最初から必要なものをすべて残してすぐに圧縮できると仮定したのは悪いコンプレッサーでしょうが、場合によってはそれだけで十分かもしれませんが、動作するよりも古い方法があります100GBのデータセットを使用して経験的に試してみてください!
アンディリーロビンソン

7

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

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

速度の大部分は、使用するプログラムに関係しています。Windows用の7zipのユーティリティを使用しましたが、非常に高速であることがわかりました。ただし、多くのファイルを圧縮するのには時間がかかりますので、一夜にしておきます。または、圧縮せずにすべてをタールで圧縮することもできます...個人的には、大きなアーカイブを解凍するのが嫌いなので、それがあなたのやりたいことだと気をつけます。


0

使用したい

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

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


1
@nikによるトップアンサーで既に提案されています。強調するために複製する必要はありません。他の回答に賛成票を投じるか、何か実質的なことはあるが複雑な回答をしたくない場合はコメントを追加します。; o)
pbhj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.