rsync+inotify搭建实时同步系统

系统环境
节点名称    内核版本          用途           ip 地址           网页数据路径           充当角色
web1    2.6.18-194.el5    服务节点 1     192.168.18.77     /data/web             rsync 服务端
web2    2.6.18-194.el5    服务节点 2     192.168.18.78     /data/web             rsync 服务端
web3    2.6.18-194.el5    服务节点 3     192.168.18.79     /data/web             rsync 服务端
Server  2.6.18-194.el5    内容发布节点    192.168.18.76    /data/web/wwwroot    ( 充当 rsync 客户端的角色 )
 
Inotify-tools 是监控文件系统变化的工具,因此必须安装在内容发布节点上
内容发布节点 ( 安装 )           服务节点 ( 安装 )
inotify-tools                   rsync
rsync
 
在三个服务节点上配置
1 、安装
#tar fxz rsync-3.0.4.tar.gz
#cd rsync-3.0.4
rsync-3.0.4]#./configure
rsync-3.0.4]#make   && make install
 
2 、配置 rsync.conf 文件
web1 节点的 rsyncd.conf( 此文件默认没有,可手动创建 ,web2 web3 文件类似 )
#more   /etc/rsync.conf
uid = nobody
gid = nobody
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
 
[ web 1]
path = /dat a / web /
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.18.76
hosts deny = *
list = false
uid = root
gid = root
auth users = repluser 1
secrets file = /etc/rep1.pass
 
3 、创建密码文件并设定 600 权限
#vim    /etc/rep1.pass
username:passwd
#chmod   600   /etc/rep1.pass
 
4 、启动守护进程
# /usr/bin/rsync --daemon
# ps -ef |grep rsync
root       8662      1   0 17:37 ?         00:00:00 /usr/bin/rsync --daemon
 
在内容发布节点上配置
1 、安装 rsync inotify
查看内核是否支持 inotify
#ll   /proc/sys/fs/inotify
-rw-r--r-- 1 root root 0 01-22 18:59 max_queued_events
-rw-r--r-- 1 root root 0 01-22 18:59 max_user_instances
-rw-r--r-- 1 root root 0 01-22 18:59 max_user_watches
如果有上面 3 项输出,表示系统默认支持 inotify
#tar   fxz inotify-tools-3.14.tar.gz
#cd   inotify-tools-3.14
inotify-tools-3.14]#./configure
inotify-tools-3.14]#make && make install
inotify-tools-3.14]#ll   /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 47208 01-17 11:57 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 43538 01-17 11:57 /usr/local/bin/inotifywatch
安装完成后会生成上面两个指令
 
2 、在内容发布节点上创建密码文件
#vim /etc/server.pass
#more   /etc/server.pass
passwd
 
3 、在内容发布节点上创建脚本
#vim   rsync.sh
#!/bin/bash
host1=192.168.18.77
host2=192.168.18.7 8
host2=192.168.18.7 9
src=/data/ web / webroot/
dst1=rep1
dst2=rep2
dst3=rep3
user1=repluser 1
user2=repluser2
user2=repluser 3
 
/usr/local/bin/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=/etc/ server .pass $src $user1@$host1::$dst1 &&
        /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/ server .pass $src $user 2 @$host 2 ::$dst 2 &&
        /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/ server .pass $src $user 3 @$host 3 ::$dst 3 &&
                echo " ${files} was rsynced " >> /var/log/rsync.log 2>&1
      echo "-----------------------------------------------"
        done
 
#chmod 755 rsync.sh
#nohup   /data/shell/rsync.sh   &
 
4 、测试
在网页发布节点的 /data/web/webroot/ 目录下增、删、改文件,看服务节点是否与发布节点一致

你可能感兴趣的:(备份,实时同步)