一:配置环境
服务器A:192.168.199.132
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
五:编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
服务器A:192.168.199.132
服务器B:192.168.199.131
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/'
五:编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”
参考2:http://blog.csdn.net/heidou_2016/article/details/52001756