現在tar czf
、バックアップファイルを結合するために実行しています。ファイルは特定のディレクトリにあります。
しかし、ファイルの数は増え続けています。使用にtzr czf
時間がかかりすぎます(20分以上かかります)。
ファイルをより迅速かつスケーラブルに結合する必要があります。
私が見つけたgenisoimage
、readom
そしてmkisofs
。しかし、どれが最速で、それぞれの制限が何であるかはわかりません。
現在tar czf
、バックアップファイルを結合するために実行しています。ファイルは特定のディレクトリにあります。
しかし、ファイルの数は増え続けています。使用にtzr czf
時間がかかりすぎます(20分以上かかります)。
ファイルをより迅速かつスケーラブルに結合する必要があります。
私が見つけたgenisoimage
、readom
そしてmkisofs
。しかし、どれが最速で、それぞれの制限が何であるかはわかりません。
回答:
ほとんどの時間がCPUまたはI / Oに費やされているかどうかを確認する必要があります。いずれにしても、それを改善する方法があります:
A:圧縮しないでください
要件のリストで「圧縮」に言及していなかったため、引数リストから「z」を削除してみてくださいtar cf
。これは少し物事をスピードアップするかもしれません。
「-N」を使用して以前にバックアップしたファイルをスキップするなど、プロセスを高速化する他の手法があります。
B:ddでパーティション全体をバックアップします
または、パーティション全体をバックアップする場合は、代わりにディスクイメージ全体のコピーを作成します。これにより、処理と多くのディスクヘッドシーク時間が節約されます。tar
また、より高いレベルで動作する他のプログラムには、ディレクトリエントリとiノードを読み取って処理し、ファイルコンテンツの場所を見つけたり、ディスクから別の場所から各ファイルを読み取ったりするヘッドディスクシークを行うオーバーヘッドがあります。
基になるデータをはるかに高速にバックアップするには、次を使用します。
dd bs=16M if=/dev/sda1 of=/another/filesystem
(これはRAIDを使用していないことを前提としているため、状況が少し変わる可能性があります)
pigz
、システムに複数のプロセッサが存在する場合は使用してください。
他の人が言ったことを繰り返すために:バックアップされているファイルについてもっと知る必要があります。ここでは、いくつかの前提事項について説明します。
ファイルがディレクトリにのみ追加されている(つまり、ファイルが削除されていない)場合、毎回再作成するのではなく、既存のtarファイルに追加していることを確認してください。これを行うには、tar
コマンドで既存のアーカイブファイル名を新しいファイル名ではなく指定するか、古いファイル名を削除します。
書き込み先の同じディスクから読み取ると、パフォーマンスが低下する場合があります。別のディスクに書き込んで、I / O負荷を分散してみてください。アーカイブファイルを元のファイルと同じディスク上に置く必要がある場合は、後で移動します。
@Yvesが言ったことを繰り返します。バックアップファイルが既に圧縮されている場合、再度圧縮する必要はあまりありません。CPUサイクルを無駄にするだけです。
inのようなlz4 crompressionでtarを使用する
tar cvf - myFolder | lz4 > myFolder.tar.lz4
両方の長所を提供します(圧縮率と速度がかなり優れています)。データにバイナリファイルが含まれている場合でも、約3の圧縮率が必要です。
さらに読む: 圧縮アルゴリズムの比較 tarでlz4 を使用する方法
誰もダンプと復元に言及していないことに驚いています。ファイルシステムに空き領域がある場合、ddよりもはるかに高速になります。
問題のファイルシステムに応じて、異なるツールが必要になる場合があることに注意してください。
一部のプログラムには組み込みの圧縮機能がありません(ダンプを除くすべて)-stdoutにパイプし、必要に応じてpigzを使用します。;-)
tar
ここでは、ファイルの読み取りはコストのかかる操作であるため、大きなオーバーヘッドが発生することは疑います。ファイルの保存方法を変更するか、根本的に異なるアプローチを使用する(ファイルシステム全体をコピーする)必要があります。あなたのファイルがどのように構成されているかを知らなければ、私たちはあなたをあまり助けられません。