rsync+inotify文件实时同步

//安装inotify

//在代码发布服务器上安装inotify,执行如下命令
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
cd ..
//在所有服务器上安装rsync,命令如下:
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install
#------以上命令在每台服务器上都需要执行---------

//配置

//在代码发布服务器与需要同步的服务器之间配置ssh key信任,在代码发布服务器上生成公钥和私钥
ssh-keygen -t rsa
//直接三次回车
//将公钥添加到各个需要更新的主机authorized_keys 文件中,在代码更新服务器上再执行
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.252#需要同步的服务器IP
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.254#需要同步的服务器IP

//如果有提示 输入yes
//按提示输入密码回车


在代码发布服务器上以root身份创建inotify_rsync.sh脚本vi /root/inotify_rsync.sh 输入

#!/bin/sh
SRC=/data/www/    #代码发布服务器目录
DST=/data/www/    #目标服务器目录
IP="192.168.0.5 192.168.0.6"    #目标服务器IP,多个以空格隔开
USER=root
/usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)" 
-e create,move,delete,close_write,attrib $SRC | while read files
do
for i in $IP
do
    /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
    echo $files >>/tmp/rsync.log 2>&1 
done
done

//赋权

//然后脚本可执行权限
chmod +x /root/inotify_rsync.sh
//设置开机自启动 ec赋予ho 
"/root/inotify_rsync.sh &" >> /etc/rc.local
//执行脚本
/root/inotify_rsync.sh &
//在代码更新服务器的/data/www/目录中创建文件,测试效果。
//如果调试过程出现类似libiconv.so.2的错误请尝试执行如下命令:
in -s/usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2

// end 

原文地址:https://www.cnblogs.com/zhanzy/p/6616096.html