我有两个 Web 服务器,server1 和 server2。
在 server2 上有一个 rsync 命令,在 crontab 中安排,当我在 server1 上进行一些更改时,它会更新 /etc/nginx 文件夹:
*/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中。