Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58379
  • 博文数量: 7
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-05 14:39
文章分类

全部博文(7)

文章存档

2015年(1)

2014年(5)

2013年(1)

我的朋友

分类: LINUX

2014-02-25 15:52:50

注意:rsync inotify 需要逆向思考,当只做rsync不实时同步时,我们一般是从rsync服务端向rsync客户端同步数据。当需要添加inotify实现实时同步数据时,我们就需要从rsync客户端向各rsync服务端同步数据,这样rsync客户端就变成了master,而rsync服务端就变成了slave。
原理:当test的本地目录,也就是需要同步的目录发生变化时,比如有文件改名、更新、删除、权限变化,此时就使用inotify命令查找这些变化,进行相应的轮询工作
源服务器 192.168.1.43
目标服务器 192.168.1.248
实现源服务器192.168.1.43 /root/zj/test文件夹文件实时同步到目标服务器192.168.1.248 的/data/test/目录下
查看rsync是否安装rpm -qa|grep rsync;一般情况系统自带了。

在目标服务器192.168.1.248上配置
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[test] 模版名称
path = /data/test/ 同步的路径
ignore errors
read only = no
list = no
auth users = backup
secrets file = /etc/rsyncd.pwd 


vi /etc/rsyncd.pwd 
backup:123456

设置权限
chmod 600 /etc/rsyncd.conf
chmod 600 /etc/rsyncd.pwd

启动rsync
/usr/bin/rsync --daemon

在源服务器上安装inotify

./configure   --prefix=/opt/inotify
make && make install

在源服务器192.168.1.43编写触发同步脚本
vi /data/rsync.sh
#!/bin/sh
SRC=/root/zj/test/
DST=backup@192.168.1.248::test 这里的test 需要与rsyncd.conf中配置的模版名称一样
INWT=/root/zj/inotify/bin/inotifywait
RSYNC=/usr/bin/rsync
$INWT -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T  %w %f %e' -e create,move,delete,modify $SRC | while read file ; do
$RSYNC -vzrtopg --progress --delete --password-file=/home/rsyncd.pwd $SRC $DST
echo "${file}  was rsynced" >> /tmp/rsync.log 2>&1
done

赋权
chmod +x rsync.sh

vi /home/rsyncd.pwd 
123456

赋权
chmod 600 /home/rsyncd.pwd

 nohup  /data/rsync.sh & 后台运行

设置开机启动
echo "/data/rsync.sh &" >> /etc/rc.local

最后测试文件是否同步,在192.168.1.43 /root/zj/test下创建文件,看192.168.1.248/data/test是否同步过来
阅读(1803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~