web-dev-qa-db-ja.com

RSYNCスキャン速度を改善する/代替アプローチ?

Rsyncを使用して、アプリケーションログファイルをあるサーバーから別のサーバーに転送しています。ディレクトリのスキャンに永遠にかかることを除いて、正常に動作します。約160,000のログファイルと数千のディレクトリがあるので、スキャンに時間がかかる理由を理解できます。ただし、特定の同期で変更されるファイルはごくわずかなので、これを高速化できるより効率的な方法やrsyncオプションがあるかどうか疑問に思っています。ログファイル自体は小さいです(それぞれ数kbのみ)。

ありがとうございました!

3
Jason

manpage から:

Rsync 3.0.0以降、使用される再帰的アルゴリズムは、以前よりもはるかに少ないメモリを使用し、最初のいくつかのディレクトリのスキャンが完了した後に転送を開始するインクリメンタルスキャンになりました。このインクリメンタルスキャンは再帰アルゴリズムにのみ影響し、非再帰転送は変更しません。また、転送の両端がバージョン3.0.0以上の場合にのみ可能です。

一部のオプションでは、ファイルリスト全体を知るためにrsyncが必要なため、これらのオプションはインクリメンタル再帰モードを無効にします。これらには、--delete-before--delete-after--Prune-empty-dirs、および--delay-updatesが含まれます。このため、-deleteを指定した場合のデフォルトの削除モードは、接続の両端が3.0.0以上の場合、--delete-duringになります(これを改善するように要求するには、--delまたは--delete-duringを使用します)明示的に削除モード)。 --delete-delayを使用するよりも適切な--delete-afterオプションも参照してください。

上記のオプションのいずれかまたは古いバージョンのrsyncを使用している場合は、改善された増分再帰モードを無効にしている可能性があります。それ以外の場合、他の唯一のオプションは、rsyncに考慮すべきファイルを少なくすることです。

2
mgorven