192.168.1.11是server1,
192.168.1.22是server2。
【1】安装inotify-tools
各大linux发行版本都有inotify-tools软件包,建议通过yum方式安装:
[root@server1 ~]#yum install inotify-tools
[root@server2 ~]#yum install inotify-tools
******说明开始*********************************
郁闷的是!公司服务器上竟然没有找到inotify-tools这个包!
于是只能网上搜包,编译安装了:
[root@server1 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@server1 ~]# tar xzvf inotify-tools-3.14.tar.gz
[root@server1 ~]# cd inotify-tools-3.14
[root@server1 ~]# ./configure
[root@server1 ~]# make
[root@server1 ~]# make install
[root@server2 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@server2 ~]# tar xzvf inotify-tools-3.14.tar.gz
[root@server2 ~]# cd inotify-tools-3.14
[root@server2 ~]# ./configure
[root@server2 ~]# make
[root@server2 ~]# make install
******说明结束*********************************
【2】安装unison
通过源码包编译安装unison,需要Objective Caml compiler。
1)安装ocaml到/usr/local/src(建议版本3.0以上,安装路径可自己定义)
[root@server1 ~]# cd /usr/local/src
[root@server1 src]# wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz
[root@server1 src]# tar -zxvf ocaml-3.12.1.tar.gz
[root@server1 src]# cd ocaml-3.12.1
[root@server1 ocaml-3.12.0]# ./configure
[root@server1 ocaml-3.12.0]# make world opt
[root@server1 ocaml-3.12.0]# make install
2)编译安装unison(unison版本可以自行去网上下载)
[root@server1 src]# wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz
[root@server1 src]# tar -xzvf unison-2.40.63.tar.gz
[root@server1 src]# cd unison-2.40.63
[root@server1 unison-2.40.63]# make UISTYLE=text
[root@server1 unison-2.40.63]# make install
******说明开始*********************************
执行make install过程中,可能会出现以下错误提示:
mv: cannot stat '/root/bin//unison': No such file or directory
make: [doinstall] Error 1 (ignored)
cp unison /root/bin/
cp: cannot create regular file '/root/bin/': Is a directory
make: *** [doinstall] Error 1
用百度在线翻译了一下,大致意思是:找不到/root/bin目录。
因为unison默认是将unison文件拷贝到/root/bin目录,但
Linux默认没有该目录,所以我们需要将生成的可执行文件unison复制到系统PATH目录。
[root@server1 unison-2.40.63]# whereis $PATH //查看系统PATH目录
bin: /usr/local/bin
[root@server1 unison-2.40.63]# cp unison /usr/local/bin
******说明结束*********************************
3)将可执行文件unison上传到server2主机
[root@server1 unison-2.40.63]# scp unison root@192.168.1.22:/root/
******说明开始*********************************
远程连接可能会出现:
Are you sure you want to continue connecting (yes/no)?
别犹豫,敲个 yes 吧,然后出现:
root@192.168.1.22's pass
word:
别发呆,输入server2的密码吧,然后出现:
unison 100% 1473KB 36k/s 00:40
说明unison已经成功上传至server2了。
双机没配置信任key之前,你远程连接都需要输入密码滴!
******说明结束*********************************
4)登陆server2主机,将unison复制到PATH目录
[root@server2 ~]# cp unison /usr/local/bin
【3】配置双机信任(ssh key)
1)server1创建key
[root@server1 ~]# ssh-keygen -t rsa
******说明开始*********************************
是不是出现了好多英文句子,看不懂不怪你,我也看不懂,哈哈!
用百度在线翻译一下,大致意思是:什么公钥,密钥存放位置了,是否需要私钥密码了之类的。
别理会,敲回车就成!之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/root/.ssh/目录下。
******说明结束*********************************
2)将server1的公钥添加到server2的authorized_keys文件
--将钥文件传到server2主机
[root@server1 ~]# scp ~/.ssh/id_rsa.pub root@192.168.1.22:/root
******说明开始*********************************
远程连接可能会出现:
Are you sure you want to continue connecting (yes/no)?
别犹豫,敲个 yes 吧,然后出现:
root@192.168.1.22's pass
word:
别发呆,输入server2的密码吧,然后出现:
id_rsa.pub 100% 394 0.4KB/s
说明公钥已经成功上传至server2了。
双机没配置信任key之前,远程连接都需要输入密码滴!
******说明结束*********************************
--登录server2,将公钥添加到authorized_keys文件中
[root@server2 ~]# mkdir .ssh
[root@server2 ~]# chmod 700 .ssh
[root@server2 ~]# mv ~/id_rsa.pub ~/.ssh/authorized_keys
[root@server2 ~]# chmod 600 ~/.ssh/authorized_keys
3)server2创建key
[root@server2 ~]# ssh-keygen -t rsa
******此处说明参看上面**************************
4)将server2的公钥添加到server1的authorized_keys文件
--将钥文件传到server1主机
[root@server2 ~]# scp ~/.ssh/id_rsa.pub root@192.168.1.11:/root
******此处说明参看server1**************************
--登录server1,将公钥添加到authorized_keys文件中
[root@server2 ~]# mv ~/id_rsa.pub ~/.ssh/authorized_keys
******说明开始*********************************
此处不用新建.ssh文件夹,不用chmod权限了?
server1当时创建key时候,.ssh等文件夹就已经存在了!
******说明结束*********************************
5)重启server1,server2的ssh服务
[root@server1 ~]# /etc/init.d/sshd restart
[root@server2 ~]# /etc/init.d/sshd restart
【4】测试是否配置成功
[root@server1 ~]# ssh root@192.168.1.22 date
[root@server2 ~]# ssh root@192.168.1.11 date
不用提示输入密码即可互相得到对方的时间,就证明配置成功了。
【5】使用说明
在任意一个server机上执行unison命令:
[root@server1 ~]# unison -bath /home/server1image/ ssh://192.168.1.22//home/server2image/
【6】创建.sh脚本来执行同步
1)server1上创建脚本unison2.sh:
#/bin/bash
ip2="192.168.1.22"
src2="/home/server1image/"
dst2="/home/server2image/"
/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 " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done
2)server2上创建脚本unison1.sh:
#/bin/bash
ip1="192.168.1.11"
src1="/home/server2image/"
dst1="/home/server1image/"
/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 " >> /var/log/inotify.log
echo `date | cut -d " " -f1-4` >> /var/log/inotify.log
done
【7】执行.sh脚本
server1,server2各自执行.sh即可。
- unison+inotify-tools触发式双向自动同步
双向实时数据同步部署 首先添加服务器ssh信任,即免秘钥登陆 Web1:192.168.10.36 Web2:192.168.10.37 分别在web1和web2上执行以下命令 mkdir ~/.ss ...
- linux系统中rsync+inotify实现服务器之间文件实时同步
最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...
- 两台linux主机使用unison + inotify实现web文件夹同步
两台服务器同步数据 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步. unison 支持双向同步,你可以同A同步到B ,也 ...
- 关于kali linux 2.0的vmware tools的安装问题
在安装好kali linux 2.0 后,首先要做的就是添加源并更新系统,否则会出现软件定位问题. 在kali 2.0中,vmware tools已经不能使用了,官方放了一个工具下载安装就好. 添加源 ...
- unison+inotify实现文件双向自动同步
nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据, 而且数据量很大的数据不适合nfs Unison是一款跨平台(window, ...
- [转]通过rsync+inotify-tools+ssh实现触发式远程实时同步
文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的“cwRsyncServer”. 但是,我们一般都是通过结合cro ...
- linux下rsync+inotify实现服务器之间文件实时同步
先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...
- unison+inotify的Web目录同步方案
1.在Linux下做WEB目录文件同步 一般有如下几种方式: ----------------------------------------------- 1) nfs实现web数据共享 ...
随机推荐
- C#中ref和out的区别浅析
这篇文章主要介绍了C#中ref和out的区别浅析,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢,需要的朋友可以参考下 在C#中通过使用方法来获取返回值时,通 ...
- Redis的windows安装
第一步:下载Windows下的Redis链接:http://web.kuaipan.cn/n/drive/files/179275650081763322 第二不:打开cmd窗口命令:定位的Redis ...
- 【第六篇】Volley之https相关
Volley之https信任所有证书实现: public class HttpsTrustManager implements X509TrustManager { private static Tr ...
- 网站常用js代码搜集
1.若是手机端打开,则跳转到手机页面 <script language="javascript"> if(navigator.userAgent.match(/(iPh ...
- C#读取和写入文件
一.读取文件 如果你要读取的文件内容不是很多, 可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding) ...
- static 控件颜色修改
在对话框上放一个StaticText控件后如果文字长度不能铺满控件的 rect,如下: 那么运行时会出现如下效果 通过MSG_WM_CTLCOLORSTATIC消息修改static控件背景色模式为透明 ...
- MAC img 安装 mysql 修改密码
参考 : http://tieba.baidu.com/p/3042628829 step1: 苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop ...
- 2.按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu) 其中属性有:身高(height),名字(name),武器(weapon) 方法有:显示名字(printName),显示武器(printWeapon) (2)在主类的main方法中创建二个对象:zhuBaJie,sunWuKong。并分别为他 们的两个属性(name,weapon)赋值,最后分别调用printNam
XiYouJiRenWu package com.hanqi.test; public class XiYouJiRenWu { String height,name,weapon; XiYouJiR ...
- TortoiseGit保存用户名及密码
保存密码方式如下,需要setting中填写自己的名字,Email地址,并在.gitconfig中 [credential] 中设置helper = store
- 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
在上一篇项目管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中我们已经讲解了如何使用TortoiseSVN和Vi ...