
У меня есть два веб-сервера: server1 и server2.
На сервере server2 есть команда rsync, запланированная в crontab, которая обновляет папку /etc/nginx, когда я вношу какие-либо изменения на сервере server1:
*/5 * * * * rsync -avzhe ssh user@server1:/etc/nginx/ /etc/nginx/
Как узнать, что rsync что-то изменил и мне придется перезагрузить nginx?
решение1
Я нашел решение.
Добавляя опцию -i и удаляя -v, rsync выводит что-то только если файлы были изменены. Поэтому я написал этот скрипт:
#!/bin/bash
RSYNC=$(rsync -aizhe ssh user@server1:/etc/nginx/ /etc/nginx/)
if [ $? -eq 0 ]; then
if [ -n "${RSYNC}" ]; then
/usr/sbin/nginx -s reload
echo "reloaded."
fi
else
exit 1
fi
и поместите его в crontab.