利用unison+inotify 实现数据双向实时同步
环境:Centos 6.5 64位
server1 :192.168.1.201
server2 :192.168.1.250
需求软件:ocaml unison inotify
我这里全是使用yum安装的,若是喜欢使用源码编译安装的可以官网下载源码包。
yum install ocaml unison inotify
第一步:保证两台服务器之间可以通过ssh无密码访问,为了安全,需要创建一个普通用户:
两边执行的步骤一样:
useradd unison
passwd unison
su - unison
ssh-keygen -t rsa (直接三次回车即可)
mkdir .ssh
scp .ssh/id_rsa.pub 192.168.1.250:/home/unison/.ssh/authrized_keys
scp .ssh/id_rsa.pub 192.168.1.201:/home/unison/.ssh/authrized_keys
chmod 600 .ssh
第二步:创建shell脚本来执行同步
在server1 上
vim /home/unison/inotify.sh
#! /bin/bash ip2="192.168.1.250" src2="/home/unison/test" dst2="/home/unison/test" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line; do /usr/bin/unison -batch $src2 ssh://$ip2//$dst2 echo -n "$line" >> /home/unison/inotify.log echo `date| cut -d ‘ ‘ -f1-4` >> /home/unison/inotify.log done |
在server2 上创建脚本:
#! /bin/bash ip1="192.168.1.201" src1="/home/unison/test" dst1="/home/unison/test" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line; do /usr/bin/unison -batch $src1 ssh://$ip1//$dst1 echo -n "$line" >> /home/unison/inotify.log echo `date| cut -d ‘ ‘ -f1-4` >> /home/unison/inotify.log done |
最后分别在两台服务器上执行脚本即可,
若想开机启动,可以加入到/etc/rc.d/rc.local中。