软件包的下载地址:http://down.51cto.com/data/2219727
1 目的:实现两个主机上面的目录实时同步数据,Unison支撑双向同步操纵,你既可以从A同步到B,也可以从B同步到A,这些都不须要额外的设定。
2 实验环境:server1 : 192.168.127.129 server2 : 192.168.127.130
同步的目录都是/data/nest
##编译安装ocaml,unison依赖于ocaml
解压 tar zvxf ocaml-3.10.2.tar.gz
cd/root/ocaml-3.10.2
./configure
make world opt
make install
##编译安装inotify
[root@jie1 ~]# cd inotify-tools-3.14
[root@jie1 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify&& make && make install
[root@jie1 inotify-tools-3.14]# cd /usr/local/inotify/
##修改PATH环境变量
[root@jie1 inotify]# echo "PATH=/usr/local/inotify/bin:$PATH">/etc/profile.d/inotify.sh
[root@jie1 inotify]# source /etc/profile.d/inotify.sh
##添加库文件到系统识别的路径
[root@jie1 inotify]# echo "/usr/local/inotify/lib">/etc/ld.so.conf.d/inotify.conf
[root@jie1 inotify]# ldconfig -v | grep inotify
/usr/local/inotify/lib:
libinotifytools.so.0 -> libinotifytools.so.0.4.1
##链接库文件到系统识别的路径
[root@jie1 inotify]# ln -sv /usr/local/inotify/include/ /usr/include/inotify
`/usr/include/inotify' -> `/usr/local/inotify/include/'
##编译安装unison (保证两台主机之间版本要一致)
Tar zxvf unison-2.32.52.tar.gz
cd/root/unison-2.32.52
##安装依赖性包
[root@jie1 unison-2.32.52]#yum -y install ctags-etags
[root@jie1 unison-2.32.52]# make UISTYLE=text
##make install会提示错误,
安装报错:
mv /root/bin//unison/tmp/unison-12798
mv: 无法 stat “/root/bin//unison”: 没有那个文件或目录
make: [doinstall] 错误 1 (忽略)
cp unison /root/bin/
cp: 无法创建一般文件“/root/bin/”: 是一个目录
make: *** [doinstall] 错误 1
解决办法:
创建/root/bin文件夹
[root@www unison-2.40.63]# mkdir /root/bin
再次执行make install,还是报如下错误:
[[email protected]]# make install
mv /root/bin//unison/tmp/unison-12868
mv: 无法 stat “/root/bin//unison”: 没有那个文件或目录
make: [doinstall] 错误 1 (忽略)
cp unison /root/bin/
cp unison/root/bin/unison-2.40
尝试再次执行make install,就解决了问题:
[[email protected]]# make install
mv /root/bin//unison/tmp/unison-12899
cp unison /root/bin/
cp unison/root/bin/unison-2.40
至此,全部安装完毕
服务器130脚本:
Vi 130.sh #/bin/bash ipA="192.168.127.129" srcB="/data/nest" dstA="/data/a" /usr/local/inotify/bin/inotifywait -mrq -ecreate,delete,modify,move $srcB | whi le read line; do /root/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
服务器129的脚本
Vi 129.sh #/bin/bash ipB="192.168.127.130" srcA="/data/a/" dstB="/data/nest/" /usr/local/inotify/bin/inotifywait -mrq -ecreate,delete,modify,move $srcA | while read line; do /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
##服务器129测试 ,
Sh �x 129.sh先运行unison同步脚本,查看过程,然后进入同步目录/data/nest,去里面新建文件或者目录,不出意外的话,脚本会有长时间的输出信息,然后你登入130去查看/data/nest这个目录,刚刚129上面的文件都会同步过来
## 服务器130测试
同上
最后我们可以把脚本加入到开机自动项里面,并且后台运行编辑/etc/rc.local
加入 /bin/sh /shell/139.sh &
经测试,如果脚本加入到这个里面,开机自启动,虽然运行了这个脚本,但是文件并不能同步,所以还是要手动执行一次。
目前不知道什么原因,请各位指教!