inotify+unison实现数据双向实时同步

unison+inotify实现web数据双向同步

Unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议进行同步。更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。

 

服务器分别为:

vm1:10.0.1.12  ,同步目录: /data/ftp/dybus/

vm2:10.0.1.13 ,同步目录:/data/ftp/dybus/

 

1.下载包 inotify-tools-3.14.tar.gz   ocaml-3.10.2.tar.gz    unison-2.40.63.tar.gz

wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.32.52/unison-2.32.52.tar.gz

wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.40.63/unison-2.40.63.tar.gz

 

vm1和vm2上面同时安装以下程序

安装 inotify-tools-3.14.tar.gz

tar zxvfp inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure

make

make install

 

安装ocaml-3.10.2.tar.gz

tar zxvfp ocaml-3.10.2.tar.gz

cd ocaml-3.10.2

./configure

make world opt

make install

 

安装unison-2.40.63.tar.gz

tar zxvfp unison-2.40.63.tar.gz

cd unison-2.40.63

ls

make UISTYLE=text THREADS=true STATIC=true       #UISTYLE=text THREADS=true STATIC=true 表示:使用命令方式,加入线程支持,以静态模式编译

make install

122147_GODm_2453601.png

mv /root/bin//unison /tmp/unison-11425

mv: 无法获取"/root/bin//unison" 的文件状态(stat): 没有那个文件或目录

make: [doinstall] 错误 1 (忽略)

cp unison /root/bin/

cp: 无法创建普通文件"/root/bin/": 是一个目录

make: *** [doinstall] 错误 1

 

cp unison /usr/local/bin

##make install会提示错误,此错误就是要你cp unison /usr/local/bin,复制即可

 

制作密钥使两台设备免密登录

vm1

cd

cd .ssh/

ssh-keygen -t rsa -P ''                 

 

[一直回车]

 

ls

touch authorized_keys

cat id_rsa.pub >>authorized_keys

scp authorized_keys root@10.0.1.12:/root/.ssh/

 

vm2

cd .ssh/

ssh-keygen -t rsa -P ''                 

 

[一直回车]

 

测试免密登录

vm2

[root@web02~]# ssh root@10.0.1.12

Last login: Thu Sep  8 14:46:13 2016 from 192.168.13.94

[root@web01~]#

 

vm1

[root@web01~]# ssh root@10.0.1.13

Last login: Thu Sep  8 14:46:13 2016 from 192.168.13.94

[root@web02~]#

 

 

 

创建文件目录

[root@web01~]# mkdir -p  /data/ftp/dybus/

[root@web02~]# mkdir -p  /data/ftp/dybus/  

 

编写脚本,实现数据实时同步。

vm1

vim unison-A.sh

#/bin/bash

ipB="10.0.1.13"

srcA="/data/ftp/dybus/"

dstB="/data/ftp/dybus/"

/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $srcA | while read line; do

/usr/local/bin/unison  -servercmd=/usr/local/bin/unison -batch $srcA ssh://$ipB/$dstB

echo -n "$line " >> /var/log/inotify.log

echo `date | cut -d " " -f1-4` >> /var/log/inotify.log

done

 

vm2

vim unison-B.sh

#/bin/bash

ipA="10.0.1.12"

dstA="/data/ftp/dybus/"

srcB="/data/ftp/dybus/"

/usr/local/bin/inotifywait -mrq -e create,delete,modify,move $dstB | while read line; do

/usr/local/bin/unison  -servercmd=/usr/local/bin/unison -batch $srcB ssh://$ipA/$dstA

echo -n "$line " >> /var/log/inotify.log

echo `date | cut -d " " -f1-4` >> /var/log/inotify.log

done

 

创建定时任务保持实时同步 vm1 和vm2上都需要做

#unison+inotify

*       *       *       *       *       /data/script/unison-A.sh > /dev/null 2>&1 &

 

测试是否成功

vm1 

cd /data/ftp/dybus/

touch 123

ls

 

vm2

ls

123

 

vm2

rm -rf 123

 

vm1

ls

 

OK 测试成功。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/54720/blog/744744

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值