私はinotifyを使用してディレクトリを監視し、rsyncを使用してサーバー間でファイルを同期しています。同期は完全に機能し、メモリ使用量は基本的に問題ではありません。ただし、最近では大量のファイル(350k)が追加され、パフォーマンス、特にCPUパフォーマンスに影響を与えます。 rsyncが実行されると、CPU使用率は90%/ 100%になり、650,000個のファイルが監視/同期され、rsyncを完了するのに長い時間がかかります。
rsyncを高速化し、変更されたrsyncディレクトリのみを高速化する方法はありますか?または、別のディレクトリに複数のinotifywaitを設定します。使用されるスクリプトは次のとおりです。
更新:--updateフラグを追加しましたが、使用法がほとんど変わっていないようです。
#! /bin/bash
EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*' | (
WAITING="";
while true; do
LINE="";
read -t 1 LINE;
if test -z "$LINE"; then
if test ! -z "$WAITING"; then
echo "CHANGE";
WAITING="";
rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
fi;
else
WAITING=1;
fi;
done)
ベストアンサー1
サーバーのプロセッサが遅い場合は、チェックサムと圧縮にrsyncを使用しないでください。 rsyncコマンドからht "-z"オプションを削除します。
rsync --update -alvr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
650kファイルを比較するためにrsyncを避けないことに注意してください。 /var/www のサブディレクトリを 1 つずつ再同期することで、一度に確認されるファイルの数を減らすことができます。