我正在使用 inotify 观看目录并使用 rsync 在服务器之间同步文件。同步工作完美,内存使用基本上不是问题。但是,最近添加了大量文件 (350k),这影响了性能,尤其是 CPU。现在,当 rsync 运行时,CPU 使用率飙升至 90%/100%,并且 rsync 需要很长时间才能完成,有 650k 个文件正在被监视/同步。
有什么办法可以加速rsync并且只rsync已经改变的目录?或者在不同的目录上设置多个 inotifywaits。正在使用的脚本如下。
更新:我添加了 --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)
Run Code Online (Sandbox Code Playgroud)
如果服务器的处理器速度较慢,请避免使用 rsync 进行校验和压缩。我会删除 rsync 命令中的 ht "-z" 选项。
rsync --update -alvr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
Run Code Online (Sandbox Code Playgroud)
请注意,它不会避免 rsync 比较 650k 文件。您可以将 /var/www 的子目录一一同步,以减少一次检查的文件数量。
归档时间: |
|
查看次数: |
6490 次 |
最近记录: |