一般的な方法であるtar cfz
を使用してバックアップを高速化したい。しかし、バックアップされたファイルは日々大きくなるため、遅くなります。
サーバーで利用可能ないくつかのコアを利用することを考えていましたが、tar cfz
を使用してバックアップを実行するか、tarをgzipにパイプすることとの間に違いがあるかどうか疑問に思いました:tar cf - | gzip
最初のプロセスは、パイピングと同様の方法で2つのプロセス(tarとgzip)を生成するため、違いはないと思います。
違いがない場合、増分せずにこれを行うための良い代替手段を知っていますか?私も見ています pigz そしてそれはうまく見えます。
複数のコアを利用したいという場合、gzipを使用したtarはCPUにバインドされており、IOにバインドされていません。これが当てはまると思いますか?確信が持てない場合は、 sar、iostat、topを実行するか、監視グラフなどをチェックして調べる必要があります。最初に問題を理解せずに問題を解決しようとするのは良い考えではありません。これが確かに当てはまるとは言えませんが、私の推測ではgzipで圧縮されていても、IOバウンドになる可能性が高くなります。
IOバウンドであり、複数の配列がある場合は、配列ごとに個別のプロセスが理にかなっている可能性があります。
また、インクリメンタルを検討するというDavidのアドバイスも2番目です。
このようにいじっても、tar
とgzip
の生のパフォーマンスが向上する可能性はほとんどありません。ハードウェアをより有効に活用するために、フォルダーを異なる部分に分割し、複数のアーカイブを同時に実行することができます。
なぜインクリメンタルに行きたくないのですか?ローカルでこれを行っている場合でも、 rsnapshot を使用することをお勧めします。これは、ハードリンクを使用して、複数回の正確なコピーを保持しながらディスク領域を節約できるためです。
CPUバウンド(ioバウンドではない!)の場合は、 pigz を使用できます。 gzipを複数のコアに分散します。バックアップに使用しています。 gzipの代わりにそのドロップ:
tar cf - | pigz