ファイルの並列アーカイブについて何かありますか?
Tarは素晴らしいですが、私はテープアーカイブを使用していません。smpを使用しているため、アーカイブがすばやく(bzip2のような圧縮で)行われることが重要です。
私はあなたがpbzip2を探していると思います:
PBZIP2は、pthreadを使用し、SMPマシンでほぼ線形のスピードアップを実現するbzip2ブロックソートファイルコンプレッサーの並列実装です。
プロジェクトホームページ を確認するか、お気に入りのパッケージリポジトリを確認してください。
7Zip は、-mmt
フラグを指定した場合に複数のスレッドで実行できますが、7zアーカイブに圧縮する場合のみです。これは、圧縮率が高く、アーカイブの作成にZipよりも低速です。このようなことをしてください:
7z a -mmt foo.7z /opt/myhugefile.dat
OPは、並列圧縮ではなく並列アーカイブについて質問しました。
ソース素材が、異なるディレクトリ/ファイルが異なるディスク上にある可能性のあるファイルシステム、または圧縮ツールの入力速度を超える単一の高速ディスクからのものである場合、実際に複数の入力ストリームがあると効果的です。圧縮層に入ります。
意味のある質問は、並列アーカイブからの出力はどのように見えるのですか?もはや単一のファイル記述子/ stdout
ではなく、スレッドごとのファイル記述子です。
これまでの例は、Postgresql pg_dump
の並列ダンプモードです。このモードでは、バックアップするテーブルのセットを処理するスレッド(ワークキューと複数のスレッドを使用するワークキュー)がディレクトリにダンプされます。
主流の並列アーカイバーが実際にあるかどうかはわかりません。 ZFSで使用するためにSolaris Tarのハックがありました: http://www.maier-komor.de/mtwrite.html
複数のスレッドを正常に実行できる専用のバックアップツールがいくつかありますが、ワークロードをディレクトリごとに高レベルで分割するだけの多くのツールがあります。
tar --use-compress-program=pigz ....
pigz
をお好みの並列圧縮プログラムに置き換えます。 tar
を使用する理由は、所有者、グループ、権限を格納できるためです。そのメタデータはしばしば便利です(たとえば、複雑なシステムでディレクトリツリーを復元するなど)。
pigz はgzipの並列実装ですが、実際には複数のプロセッサのみを圧縮に使用でき、解凍はできません。
tar
は単にファイルを正確に複製し、ディレクトリツリーと元のファイル属性を保持するのに非常に優れたアーカイブ形式です。 TARは、すべてが保存されるため、バックアップの作成に非常に適しています。私が使う pbzip2
システムのバックアップに使用するtarアーカイブを圧縮して、非常に良い結果を得ています。
このコマンドでうまくいくはずです。
tar -cpS "infile" | pbzip2 > "outfile"
pbzip2
は別の圧縮ユーティリティで置き換えることができますが、LZMA圧縮(pxzなど)は、大きなファイルを圧縮/解凍するときにRAM)のTONを使用します(8GBで8つのスレッドを実行しようとしました) RAM、pxzがディスクへのスワッピングを開始しました)。
別の候補は lbzip2
。これはpbzip2によく似ています
圧縮については、バージョン5.2以降のxz
は-T
オプションによる並列圧縮をサポートしています。