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

一:配置环境
服务器A:192.168.199.132

服务器B:192.168.199.131


二:unison、inotify简介
1)Unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH、RSH和Socket等网络协议进行同步。更棒的是,Unison支持双向同步操作,你既可以从A同步到B,也可以从B同步到A,这些都不需要额外的设定。
2)Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。简单的说它可以监控文件有没有发生过变化
三:配置两台服务器的ssh信任(无密码登录)
有关ssh信任这部分的配置我已经单独列为一章,参考:
http://blog.csdn.net/nianzhi1202/article/details/77488737
四:分别在两台服务器上安装ocaml、unison、inotify
对于三个软件都是使用编译安装,都是下载到/usr/local下(不是必须这个目录)
1)安装ocaml
unison的编译安装依赖ocaml,官网http://caml.inria.fr/下载,我安装的是3.10.2
wget  http://caml.inria.fr/pub/distrib/ocaml-3.10/ocaml-3.10.2.tar.gz
tar xvf ocaml-3.10.2.tar.gz
cd ocaml-3.10.2
./configure
make world opt
make install
2)安装unison
yum -y install ctags-etags #安装依赖包
下载地址:http://www.seas.upenn.edu/~bcpierce/unison/
wget   http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.32.52/unison-2.32.52.tar.gz
tar xvf unison-2.32.52.tar.gz 
cd unison-2.32.52 
make UISTYLE=text 
#make install会提示错误,此错误就是要你cp unison /usr/local/bin,因为unison默认是将unison文件拷贝到/root/bin目录,但Linux默认没有该目录,所以我们需要将生成的可执行文件unison复制到系统PATH目录。
make install 
cp unison /usr/local/bin
3)安装inotify
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 
tar xf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14 
./configure --prefix=/usr/local/inotify && make && make install 
cd /usr/local/inotify/ 
#修改PATH环境变量 
echo "PATH=/usr/local/inotify/bin:$PATH" >/etc/profile.d/inotify.sh 
source /etc/profile.d/inotify.sh #刷新
#添加库文件到系统识别的路径 
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf 
ldconfig -v | grep inotify 
/usr/local/inotify/lib: 
    libinotifytools.so.0 -> libinotifytools.so.0.4.1 
#链接库文件到系统识别的路径 ,如图
ln -sv /usr/local/inotify/include/ /usr/include/inotify 

`/usr/include/inotify' -> `/usr/local/inotify/include/'


到此所需的软件都已安装完毕,可以在A服务器上执行这个命令,来查看两台服务器之间是否可以同步文件,unison -batch /data/ ssh://192.168.199.131//data
五:编unison实时同步脚本
1)在A上创建脚本/root/inotify.sh(chmod a+x /root/inotify.sh)

#/bin/bash
ip2="192.168.199.131"
src2="/data"
dst2="/data"
/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line; do
/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done 
2)在B上创建脚本/root/inotify.sh(chmod a+x /root/inotify.sh)
#/bin/bash 
ip1="192.168.199.132"
src1="/data/"
dst1="/data/"
/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line; do
/usr/local/bin/unison -batch $src1 ssh://$ip1/$dst1
echo -n "$line " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done

运行脚本:sh /root/inotify.sh,查看同步情况

3)添加到/etc/rc.local实现开机自启动
编辑“/etc/rc.local”,把启动程序的shell命令输入进去即可(要输入命令的全路径)
使用命令 vi  /etc/rc.local   
然后在文件最后一行添加要执行程序的全路径。
例如,每次开机时要执行一个haha.sh,这个脚本放在/root下面,那就可以在“/etc/rc.local”中加一行“/root/./inotify.sh”

参考1: http://www.jb51.net/article/41600.htm

参考2:http://blog.csdn.net/heidou_2016/article/details/52001756

参考3:http://blog.csdn.net/xuxile/article/details/53927166

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值