首页 > 代码库 > 利用rsync+inotify搭建实时同步系统
利用rsync+inotify搭建实时同步系统
系统环境(本例只列举一个服务节点):
内容发布节点server1:192.168.1.154
服务节点 c1:192.168.1.148
C1: #安装配置rsync [root@C1 ~]# yum install rsync -y [root@C1 ~]#vim /etc/rsyncd.conf uid = nobody gid = nobody ignore errors read only = no write only = no list = false use chroot = no max connections =10 strict modes = yes pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log #全局配置区域要和模块区域最好用空行分开 [C1] path = /tongbu comment = tongbu file hosts allow = 192.168.1.154 hosts deny = * uid = root gid = root auth users = user1 secrets file = /etc/user1.pass [root@C1 ~]#mkdir /tongbu [root@C1 ~]#cat /etc/user1.pass user1:123456 [root@C1 ~]# rsync --daemon [root@C1 ~]# lsof -i:873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 1578 root 3u IPv4 13354 0t0 TCP *:rsync (LISTEN) rsync 1578 root 5u IPv6 13355 0t0 TCP *:rsync (LISTEN) [root@C1 ~]#echo "/usr/bin/rsync --daemon" >> /etc/rc.local server1: #安装inotify和rsync [root@server1 ~]# uname -r #内核版本 >=2.6.13 2.6.32-358.el6.x86_64 [root@server1 ~]# ll /proc/sys/fs/inotify/ total 0 -rw-r--r-- 1 root root 0 Aug 25 15:15 max_queued_events -rw-r--r-- 1 root root 0 Aug 25 15:15 max_user_instances -rw-r--r-- 1 root root 0 Aug 25 15:15 max_user_watches [root@server1 ~]# tar -xf inotify-tools-3.14.tar.gz [root@server1 ~]#cd inotify-tools-3.14 [root@server1 ~]#cd inotify-tools-3.14 [root@server1 inotify-tools-3.14]# ./configure &&make &&make install [root@server1 ~]# inotifywa #生成两个命令表示安装成功 inotifywait inotifywatch inotifywait是一个监控等待事件,可以配合shell脚本使用,参数: -m,即“--monitor”,表示始终保持事件监听状态。 -r,即“--recursive”,表示递归查询目录。 -q,即“--quiet”,表示打印出监控事件。 -e,即“--event”,通过此参数可以指定要监控的事件,常见的事件有modify,delete、 create和attrib等。 [root@server1 ~]#yum install rsync -y [root@server1 ~]# cat /etc/user1.pass 123456 [root@server1 ~]#mkdir /tongbu11 [root@server1 shells]# vim inotifyrsync.sh #!/bin/bash host=192.168.1.148 src=http://www.mamicode.com/tongbu11"/etc/user1.pass" dst=C1 user=user1 inotifywait="/usr/local/bin/inotifywait" $inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files;do /usr/bin/rsync -vzrtopg --delete --progress --password-file=$passwordF $src $user@$host::$dst echo "${files} was rsynced" >> /tmp/rsyncd.log 2>&1 done 脚本中相关参数: --timefmt:指定时间的输出格式。 --format:指定变化文件的详细信息。 [root@server1 shells]#chmod +x inotifyrsync.sh [root@server1 shells]#./inotifyrsync.sh & [root@server1 shells]#echo "/shells/inotifyrsync.sh &" >> /etc/rc.local
至此完成所有配置,可以再sever1的/tongbu11目录下添加、删除或修改某个文件,然后到C1中的/tongbu目录中查看文件是否随server1发布目录的文件变化而变化。如果发生同步,则说明配置成功。
本文出自 “技术小菜” 博客,请务必保留此出处http://390892467.blog.51cto.com/2006821/1544747
利用rsync+inotify搭建实时同步系统
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。