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