rsync + inotify脚本注意- e选项的端口号

  

# !/bin/bash
src=https://www.yisu.com/apps/dockerfiles/lnmp/nginx/html/aiitle/aiitle_backend/public/uploads/需要同步的源路径
des=上传/#目标服务器上rsync——守护进程发布的名称,rsync——守护进程这里就不做介绍了,网上搜一下,比较简单。
rsync_passwd_file=/etc/rsyncd。passwd # rsync验证的密码文件
ip1=192.168.8.10 #目标服务器1
# ip2=192.168.0.19 #目标服务器2
用户=根# rsync——守护进程定义的验证用户名
cd $ {src} #此方法中,由于rsync同步的特性,这里必须要先cd到源目录,inotify再监听。/才能rsync同步后目录结构一致,有兴趣的同学可以进
行各种尝试观看其效果
/usr/地方/bin/inotifywait -mrq——格式的w % Xe % % f - e修改、创建、删除、鲜明,close_write,移动。/|而读文件#把监控到有发生更改的“文件路祝辞径列表“循环

  


做INO_EVENT=$ (echo $文件| awk{打印1美元})#把inotify输出切割把事件类型部分赋值给INO_EVENT
INO_FILE=$ (echo $文件| awk{打印$ 2})#把inotify输出切割把文件路径部分赋值给INO_FILE
回声“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -美元(日期)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -“在在/var/log/rsync。日志2祝辞,1
echo $文件在在/var/log/rsync。日志2祝辞,1
#增加,修改,写入完成,移动进事件
#增,改放在同一个判断,因为他们都肯定是针对文件的操作,即使是新建目录,要同步的也只是一个空目录,不会影响速度。
如果[[$ INO_EVENT=~‘创造’]]| | [[$ INO_EVENT=~‘修改’]]| | [[$ INO_EVENT=~”CLOSE_WRITE]] | | [[$ INO_EVENT=~”MOVED_TO]] #判断事祝辞件类型
,
回声的创建或修改或CLOSE_WRITE MOVED_TO祝辞在/var/log/rsync。日志2祝辞,1
rsync -avzcR - e的ssh - p 10222——密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip1}:: $ {des},,# INO_FILE变量代表路
径哦- c校验文件内容
rsync -avzcR - e的ssh - p 10222——密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip2}:: $ {des}祝辞在/var/log/rsync。日志2祝辞,1
#仔细看上面的rsync同步命令源是用了美元(目录名$ {INO_FILE})变量即每次只针对性的同步发生改变的文件的目录(只同步目标文件的方法在生产环境的某些极祝辞端环境下会漏文件现在可以在不漏文件下也有不错的速度做到平衡),然后用- r参数把源的目录结构递归到目标后面保证目录结构一致性
fi
#删除,移动出事件
如果[[$ INO_EVENT=~ '删除']]| | [[$ INO_EVENT=~”MOVED_FROM]]
,
回声的删除或MOVED_FROM祝辞在/var/log/rsync。日志2祝辞,1
rsync -avzR - e的ssh - p 10222——删除密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip1}:: $ {des},,
rsync -avzR - e的ssh - p 10222——删除密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip2}:: $ {des}祝辞在/var/log/rsync。日志2祝辞,1
#看rsync命令如果直接同步已删除的路径$ {INO_FILE}会报没有这样或目录错误所以这里同步的源是被删文件或目录的上一级路径,并加上——delete来删除祝辞目标上有而源中没有的文件,这里不能做到指定文件删除,如果删除的路径越靠近根,则同步的目录月多,同步删除的操作就越花时间。这里有更好方法的同学,欢迎交流。
fi
#修改属性事件指触摸chgrp chmod乔恩等操作
如果[[$ INO_EVENT=~“鲜明”]]
,
回声“鲜明”的在在/var/log/rsync。日志2祝辞,1
如果[!- d“INO_FILE"美元;)#如果修改属性的是目录则不同步,因为同步目录会发生递归扫描,等此目录下的文件发生同步时,rsync会顺带更新
此目录。

rsync -avzcR - e的ssh - p 10222——密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip1}:: $ {des},,
rsync -avzcR - e的ssh - p 10222——密码文件=$ {rsync_passwd_file} $(目录名$ {INO_FILE}) $ {user} @ $ {ip2}:: $ {des}祝辞在/var/log/rsync。日志2祝辞,1
fi
fi

完成

rsync + inotify脚本注意- e选项的端口号