inotify的功能:可以监控文件系统的添加、删除、修改、移动等细微动作,监控到变化,就触发rsync同步;
很多人说,为什么要这个呢,我设置rsync定时同步不就好了,貌似是很好,可是....可是,如果你对要同步的文件不确定大小的时候怎么办?如果开发上传的代码或者程序只有几M,无所谓,你设置5分钟同步一次,很好解决,当上传上百M 的程序呢?五分钟完不成,就会再开启一个rsync进程,当很多个rsync进程堵在一起的时候,你会发现,完蛋了,系统崩溃了,进不去了;还有一种情况就是,发布的东西很急,我要马上上线,一分钟我都不想等,这个时候inotify就起作用了。
部署之前,先说几个误区:
1、inotify是部署在rsync的客户端,通过在rsync的客户端推送数据到rsync的服务端(很多人习惯了从rsync服务器拉东西下来,不要搞误解了)
2、所以要求rsync服务端要设置read only = no ,write only = no,并且需要增加auth users = xxx ,secrets file = /etc/xxx.pass(其实下载可以不用设置users和secrets file ,安全你可以用hosts allow来控制,但是这种从客户端推送到服务端的,必须要auth users和 secrets file )
安装,不用详说了
文件接收端:rsync服务器
-
uid = nobody
-
gid = nobody
-
use chroot = no
-
max connections = 500
-
pid file = /var/run/rsyncd.pid
-
lock file = /var/run/rsync.lock
-
log file = /var/log/rsyncd.log
-
-
[ceshi]
-
path = /data/test
-
comment down
-
##ignore errors
-
read only = no
-
write only = no
-
list = no
-
uid = root
-
gid = root
-
auth users = upload
-
secrets file = /etc/server.pass
文件发送端:rsync客户端和inotify-tools
-
#!/bin/bash
-
host=192.168.61.161
-
src=/data/log
-
des=ceshi
-
user=upload
-
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src |while read files
-
do
-
rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user@$host::$des
-
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
-
done
把这个abc.sh脚本后台执行加入开机启动,搞定收工!
阅读(902) | 评论(0) | 转发(0) |