Я использую inotify для просмотра каталога и синхронизации файлов между серверами с помощью rsync. Синхронизация работает отлично, а использование памяти в основном не является проблемой. Однако недавно было добавлено большое количество файлов (350 тыс.), Что сказалось на производительности, особенно на процессоре. Теперь, когда rsync запускается, загрузка процессора достигает 90%/100%, а rsync занимает много времени, есть файлы 650k, которые просматриваются/синхронизируются.inotify и rsync для большого количества файлов
Есть ли способ ускорить rsync и только rsync изменил каталог? Или, альтернативно, настроить несколько inotifywaits в отдельных каталогах. Используемый сценарий ниже.
UPDATE: Я добавил --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/* [email protected]:/var/www/
fi;
else
WAITING=1;
fi;
done)
Спасибо. Это идеальная ситуация, но как узнать, какие файлы нужно передать rsync? Есть ли способ inotify, чтобы сообщить мне, какие файлы были изменены, и только синхронизировать их? – kyleredon
'inotifywait -rm' может отслеживать изменения каталога и отчета. – zeekvfu