源服务器 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
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的完整参数说明: