一、环境描述
server:192.168.122.54
client:192.168.122.55,192.168.122.56
同步目录:/data/html
server端有任何数据更新,即将同步到client端,实时同步
二、采用方法:rsync+inotify
三、关于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
五、测试过程。
略过测试过程,大家可以自己测试同步效果。