一、环境描述
server:192.168.122.54
client:192.168.122.55,192.168.122.56
同步目录:/data/html
server端有任何数据更新,即将同步到client端,实时同步
二、采用方法:rsync+inotify
三、关于inotify原理,请参考https://www.ibm.com/developerworks/cn/linux/l-inotify/
四、操作过程
4.1服务端脚本
- #!/bin/bash
- yum install rsync -y
- mkdir -p /data/html #如果要同步的不是此目录,可以根据实际需要添加目录
- #wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
- tar xzvf inotify-tools-3.14.tar.gz
- cd inotify-tools-3.14
- ./configure
- make
- make install
- #cponfigure inotify
- cat >>/home/rsync.sh << EOF
- #!/bin/bash
- src=/data/html/ #同步的源目录
- des=www
- host="192.168.122.55 192.168.122.56"
- /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib \$src | while read files
- do
- for hostip in \$host
- do
- rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets \$src root@\$hostip::\$des
- done
- echo "\${files} was rsynced" >>/tmp/rsync.log 2>&1
- done
- EOF
- #confiugre secret
- cat >> /etc/rsyncd.secrets << EOF
- 123456
- root:123456
- EOF
- chmod 0600 /etc/rsyncd.secrets
- #setting running onboot
- echo "nohup /bin/bash /home/rsync.sh &" >> /etc/rc.local
- nohup /bin/bash /home/rsync.sh &
4.2 客户端脚本
- #!/bin/bash
- yum install rsync -y
- mkdir -p /data/html
- #configure rsyncd daemon
- cat >> /etc/rsyncd.conf << EOF
- uid = root
- gid = root
- use chroot = no
- max connections = 5
- pid file = /var/run/rsyncd.pid
- lock file = /var/run/rsync.lock
- log file = /var/log/rsyncd.log
- [www]
- path=/data/html/
- comment = update
- ignore errors
- read only = no
- list = no
- hosts allow = 192.168.122.0/24
- auth users = root
- uid = root
- gid = root
- secrets file = /etc/rsyncd.secrets
- EOF
- #configure secret
- cat >> /etc/rsyncd.secrets << EOF
- 123456
- root:123456
- EOF
- chmod 0600 /etc/rsyncd.secrets
- echo "rsync --daemon" >> /etc/rc.local
- rsync --daemon
五、测试过程。
略过测试过程,大家可以自己测试同步效果。
六、附一键安装包
- svn钩子自动更新post-commit
- for dir in $(svnlook dirs-changed /var/svn/web/)
- do
- svn update -N /opt/nginx/web/$dir --username "admin" --password "admin"
- done
本文转自it你好 51CTO博客,原文链接:http://blog.51cto.com/itnihao/1065426,如需转载请自行联系原作者