inotify 是 linux 桌面环境开发的小伙伴们的福利,用于监测文件系统的变化。
先看这篇科普文,了解基本的 inotify 命令:http://www.1987.name/637.html
于是我们装一下 inotify-tools:
sudo apt-get install -y inotify-tools
然后,通过一个 while 让每次文件夹内文件变动的时候执行一段循环代码:
参考:http://stackoverflow.com/a/24568980/2544762
sync_dir() {
# 对本地路径后面归一化加上 / 以防止 rsync 误会
LOCAL=${1/%\//}/
REMOTE=$2
if [ ! -d $LOCAL ]; then
echo "请输入正确的本地目录";
exit 2;
fi
inotifywait -mrqe close_write $LOCAL | while read line
do
rsync -avz $LOCAL $REMOTE
done
}
将这段 bash 函数加入 ~/.bashrc
,就可以通过传入本地目录以及远端目录(需要 ssh 免密码登录),即可实现监控同步:
# 第一次执行之前让函数加载,以后就不用这句
source ~/.bashrc
# 监测同步文件夹
rsync /var/www/ root@REMOTE_ADDRESS:/var/www
【转载请附】愿以此功德,回向 >>
原文链接:http://www.huangwenchao.com.cn/2017/03/rsync-inotify.html【配合利用 rsync 和 inotifywait 同步开发机以及服务器的文件变化】