web-dev-qa-db-ja.com

並列ファイルアーカイバ(tarなど)はありますか?

ファイルの並列アーカイブについて何かありますか?

Tarは素晴らしいですが、私はテープアーカイブを使用していません。smpを使用しているため、アーカイブがすばやく(bzip2のような圧縮で)行われることが重要です。

42
supercheetah

私はあなたがpbzip2を探していると思います:

PBZIP2は、pthreadを使用し、SMPマシンでほぼ線形のスピードアップを実現するbzip2ブロックソートファイルコンプレッサーの並列実装です。

プロジェクトホームページ を確認するか、お気に入りのパッケージリポジトリを確認してください。

36
echox

7Zip は、-mmtフラグを指定した場合に複数のスレッドで実行できますが、7zアーカイブに圧縮する場合のみです。これは、圧縮率が高く、アーカイブの作成にZipよりも低速です。このようなことをしてください:

7z a -mmt foo.7z /opt/myhugefile.dat
21
fschmitt

OPは、並列圧縮ではなく並列アーカイブについて質問しました。

ソース素材が、異なるディレクトリ/ファイルが異なるディスク上にある可能性のあるファイルシステム、または圧縮ツールの入力速度を超える単一の高速ディスクからのものである場合、実際に複数の入力ストリームがあると効果的です。圧縮層に入ります。

意味のある質問は、並列アーカイブからの出力はどのように見えるのですか?もはや単一のファイル記述子/ stdoutではなく、スレッドごとのファイル記述子です。

これまでの例は、Postgresql pg_dumpの並列ダンプモードです。このモードでは、バックアップするテーブルのセットを処理するスレッド(ワークキューと複数のスレッドを使用するワークキュー)がディレクトリにダンプされます。

主流の並列アーカイバーが実際にあるかどうかはわかりません。 ZFSで使用するためにSolaris Tarのハックがありました: http://www.maier-komor.de/mtwrite.html

複数のスレッドを正常に実行できる専用のバックアップツールがいくつかありますが、ワークロードをディレクトリごとに高レベルで分割するだけの多くのツールがあります。

16
robbat2
tar --use-compress-program=pigz  ....

pigzをお好みの並列圧縮プログラムに置き換えます。 tarを使用する理由は、所有者、グループ、権限を格納できるためです。そのメタデータはしばしば便利です(たとえば、複雑なシステムでディレクトリツリーを復元するなど)。

12
uDude

pigz はgzipの並列実装ですが、実際には複数のプロセッサのみを圧縮に使用でき、解凍はできません。

10
Jay Hacker

tarは単にファイルを正確に複製し、ディレクトリツリーと元のファイル属性を保持するのに非常に優れたアーカイブ形式です。 TARは、すべてが保存されるため、バックアップの作成に非常に適しています。私が使う pbzip2システムのバックアップに使用するtarアーカイブを圧縮して、非常に良い結果を得ています。

このコマンドでうまくいくはずです。

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2は別の圧縮ユーティリティで置き換えることができますが、LZMA圧縮(pxzなど)は、大きなファイルを圧縮/解凍するときにRAM)のTONを使用します(8GBで8つのスレッドを実行しようとしました) RAM、pxzがディスクへのスワッピングを開始しました)。

8
lovot

別の候補は lbzip2 。これはpbzip2によく似ています

4
Felipe Alvarez

圧縮については、バージョン5.2以降のxz-Tオプションによる並列圧縮をサポートしています。

2
peterph