您的位置:首页 > 其它

Rsync+inotify实现实时同步

2010-04-26 14:01 295 查看
源服务器 192.168.50.218
目标服务器 192.168.50.219
目的:实现源服务器192.168.50.218 /www文件夹文件实时同步到目标服务器192.168.50.219 的/www目录下
一、目标服务器上安装rsync并配置
#cd /usr/local/src/tarbag/ //切换下载目录
#wget http://www.samba.org/ftp/rsync/rsync-3.0.6.tar.gz //wget下载文件
#tar –xzvf rsync-3.0.6.tar.gz –C ../software/ //解压tar包到指定目录
#cd /usr/local/src/software/ rsync-3.0.6/ //切换到解压目录
#./configure –prefix=/usr/local/rsync –disable-ipv6 //配置
#make && make install //编译安装
#cd /usr/local/rsync
#mkdir /var
#vim /usr/local/rsync/etc/rsyncd.conf
log file = /usr/local/rsync/var/rsyncd.Log
pid file = /usr/local/rsync/var/rsyncd.Pid
lock file = /usr/local/rsync/var/rsyncd.Lock
secrets file = /usr/local/rsync/etc/rsyncd.Pas
motd file = /usr/local/rsync/etc/rsyncd.Motd
hosts allow = 192.168.50.0/24
list = yes
uid = root
gid = root
use chroot = no
max connections = 30
[www]
path = /www
comment = bakup www
read only = no
auth users = root
#chmod 600 rsyncd.conf //修改权限
# vi rsyncd.motd //显示同步信息
welcome
# vim rsyncd.pas //密码文件,客户端也需要
root:123456
# rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf //启动rsync服务
二、源服务器上安装notity
#cd /usr/local/src/tarbag/ //切换下载目录
#wget http://downloads.sourceforge.net/inotify-tools/inotify-tools-3.13.tar.gz?modtime=1199213676&big_mirror=0//wget下载文件
#tar –xzvf inotify-tools-3.13.tar.gz -C /software //解压tar包到指定目录
#cd /usr/local/src/software/inotify-tools-3.13.tar.gz//切换到解压目录
#./configure –prefix=/usr/local/inotify //配置
#make && make install //编译安装
#vim /usr/local/inotify/rsync.sh
#!/bin/sh
/usr/local/inotify/bin/inotifywait -mrq -e create,move,delete,modify /www | while read file ; do
/usr/bin/rsync -avH --delete --password-file=/etc/rsyncd.pas /www/
root@192.168.50.219::www
done
#chmod +x rsync.sh
# vim /etc/rsyncd.pas
123456
设置开机启动
# echo "/usr/local/inotify/rsync.sh" >> /etc/rc.local
测试文件实时同步
运行rsync.sh脚本
#./rsync.sh
我们在源服务器上touch 几个文件,自动执行同步,信息如下:
welcome to rsync
building file list ... done
./
1
2
sent 208 bytes received 66 bytes 548.00 bytes/sec
total size is 0 speedup is 0.00
到目标服务器/www上已经多了两个文件,到此同步结束
三、附加功能:上传文件时只rsync 上传的文件,删除文件时rsync整个目录
附上脚本文件
#!/bin/sh
/usr/local/inotify/bin/inotifywait -mrq -e create,move,delete,modify /www | while read file
do
www=`echo $file | awk '{print $1$3}'`
delfile=`echo $file | awk '{print $2}'`
mr=`echo $file | awk '{print $1}' |cut -b5-`
if [ $delfile = 'DELETE' -o $delfile = 'DELETE,ISDIR' ]; then
/usr/bin/rsync -avH --delete --password-file=/etc/rsyncd.pas /www/ root@192.168.50.219::www
else
/usr/bin/rsync -avH --delete --password-file=/etc/rsyncd.pas $www root@192.168.50.219::www$mr
fi
done
另推荐一条类似命令:watch -n 1 -d "ls /www" 每隔一秒监测ls命令,并输出
经过测试watch -n 1 -d "ls /www",对于子目录的变化,无法监测到
另外,它的输出为ls 内容,无法定位变化的文件
结论:此命令虽然挺有用处,但不能替代inotyfy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: