rsync+inotify实现实时单向同步

源服务器          10.13.114.16
目标服务器        10.13.114.17
目的:实现源服务器10.13.114.16 /home/admin/www/文件夹文件实时同步到目标服务器10.13.114.17 的/home/admin/www目录下

第一步:源服务器端安装rsync
wget CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
yum -y install vim-enhanced

wget
tar -zxvf rsync-3.0.8.tar.gz
cd rsync-3.0.8
./configure --prefix=/usr/local/rsync --disable-ipv6
make && make install


cd /usr/local/rsync/
mkdir etc
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 = 10.13.114.17/32 list = yes uid = root gid = root use chroot = no max connections = 30 [www] path = /home/admin/www comment = bakup www read only = no auth users = admin 

vim /usr/local/rsync/etc/rsyncd.motd 

welcome 

这是欢迎词,可以不设置


在服务端和客户端都创建admin用户,用于同步
useradd admin

在源端生成公钥,拷贝到目标段,实现免密码登录
ssh-keygen -t rsa
拷贝.ssh/id_rsa.pub到服务器端的.ssh/authorized_keys文件中
然后设置权限为
在目标段执行

#chmod 600 .ssh/authorized_keys


启动源的rsync服务

rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf

查看
ps -ef |grep rsync
端口为873

第二步:源服务器端安装inotify

wget
tar -zxvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify
make && make install

cd /usr/local/inotify/bin

#!/bin/sh SRC=/home/admin/www DST=admin@10.13.114.17:/home/admin  /usr/local/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read status do     su - admin -c "/usr/bin/rsync  -ahqzt  --delete  $SRC $DST"     echo "`date +'%Y-%m-%d %H:%M:%S'`  ${status} has rsynced" >>rsync.log done 


启动monitor.sh

#chmod +x monitor.sh

#./monitor.sh &

可以放到rc.local实现开机启动

cat "/usr/local/inotify/bin/monitor.sh &" >> /etc/rc.local

然后在源端的/home/admin/www下创建删除文件,都会同步到目标端

注释:

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件

/usr/bin/rsync -ahqzt --delete $SRC $DST
-a 存档模式
-h 保存硬连接
-q 制止非错误信息
-z 压缩文件数据在传输
-t 维护修改时间
-delete 删除于多余文件

rsync的完整参数说明:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyysxw.html