首页 > 代码库 > unison实现数据双向同步
unison实现数据双向同步
unison简介:双向同步镜像工具,支持跨平台同步。unios可以史本地磁盘的两个文件夹保持内容一致,也支持网络数据的同步
特点:跨平台
1.对内核和用户权限无特别要求
2.unison是双向的,能自动更新两份副本中没有冲突的部分
3.两种方法,一种是远程shell方式,由ssh完成
另一种是socket方式,由发送tcp包通信
4.支持增量同步
操作系统:RHEL6.2
A系统IP:192.168.5.205
B系统IP:192.168.5.206
A系统里目录/ixdba/webdata 实时同步到B系统/ixdba/webdata
在A系统安装ocaml和unison
1)安装ocaml 下载地址:http://pan.baidu.com/s/1dDGNZ25
[root@A ~]# tar jxvf ocaml-3.10.2.tar.bz2
[root@A ~]# cd ocaml-3.10.2
[root@A ocaml-3.10.2]# make world opt[root@A ocaml-3.10.2]# makeinstall
2)安装unison 下载地址:http://pan.baidu.com/s/1o6hZJr8
[root@A ~]# tar zxvf unison-2.32.52.tar.gz
[root@A ~]# cd unison-2.32.52
[root@A unison-2.32.52]# make UISTYLE=text THREADS=true STATIC=true
注:UISTYLE=text THREADS=true STATIC=true 表示使用命令行方式,加入线程支持,以静态模式编译
[root@A unison-2.32.52]# cp unison /usr/local/bin/
注:在B系统里也要装ocaml和unison,步骤与上面一样
2.配置A系统和B系统ssh信任
以下操作要在A系统和B系统都执行一遍,这里以A系统为例
1)以root用户登录
2)在root用户的主目录内创建 .ssh目录并设置正确的权限
[root@A ~]# mkdir /root/.ssh
[root@A ~]# chmod 700 /root/.ssh
3)使用ssh-keygen命令生成第2版的SSH协议的RSA密钥
[root@A ~]# ssh-keygen -t rsa
3.添加密钥到授权密钥文件中,在A系统中执行以下命令
1)
[root@A ~]# cd /root/.ssh/
[root@A .ssh]# ssh 192.168.5.205 cat /root/.ssh/id_rsa.pub >>authorized_keys
[root@A .ssh]# ssh 192.168.5.206 cat /root/.ssh/id_rsa.pub >>authorized_keys
[root@A .ssh]# scp authorized_keys 192.168.5.206:root/.ssh
[root@A .ssh]# chmod 600 /root/.ssh/authorized_keys
2)在B系统执行如下命令
[root@B ~]# chmod 600 /root/.ssh/authorized_keys
3)分别在两台机器上执行如下测试,第一次执行时,会要求输入密码信息,再次执行时,不需要输入密码就能显示系统日期,说明ssh互相信任配置成功
[root@A .ssh]# ssh 192.168.5.205 date
Wed Sep 24 17:23:50 HKT 2014
[root@A .ssh]# ssh 192.168.5.206 date
Wed Sep 24 17:24:50 CST 2014
[root@B ~]# ssh 192.168.5.206 date
Wed Sep 24 17:25:20 CST 2014
[root@B ~]# ssh 192.168.5.205 date
Wed Sep 24 17:24:37 HKT 2014
4)测试
[root@A .ssh]# unison / ssh://192.168.5.206/ -testserver
Contacting server...
Connected [//A//test -> //B//root]
4.通过命令远程使用unison
如:
unison /test ssh://root@192.168.5.206//test
表示将本机的/test 和远程主机的/test 同步 ,注意需要交互 输入回车,输入y确认
5.通过配置文件来使用unsion
在A系统操作
1) /root/.unison 用于保存unison的配置文件,如果是root用户,则位于/root/.unison
在/root/.unison目录下,如果不指定配置文件的名称,则默认是default.prf
创建/root/.unison/ixdba.prf
[root@A ~]# vim /root/.unison/ixdba.prf
1 root = /ixdba/webdata #表示本机要同步的目录
2 root = ssh://root@192.168.5.206//ixdba/webdata2 #表示B系统要同步的目录
3 #force = /ixdba/webdata #force如果不注释表示unison就变成单向同步了
4 path=www
5 path=upload
6 ignore = Path WEB-INF/tmp #忽略/ixdba/webdata/WEB-INF/tmp 目录,即同步时不同步这个目录
7 #prefer = ssh://root@192.168.5.206//ixdba/webdata
8 batch = true #表示 全自动模式,不用交互输入 回车 和y确认
9 maxthreads = 300 #同步时的最大线程
10 repeat = 1 # 表示间隔一秒后开始新的同步检查,1秒实时同步 - -
11 #retry =3 #指定失败的重试次数
12 owner = true #表示保持同步的文件属主信息
13 group = true
14 perms = -1 # 表示同步过程中保持同步文件的读写权限
15 fastcheck = true #true表示同步时通过文件的创建时间比较两地文件
false表示比较两地文件的内容,建议设置为true
16 rsync =false #不激活rsync传输模式
17 #debug=verbose
18 sshargs =-C #表示使用ssh的压缩传输方式
19 xferbycopying =true #优化传输参数
20 confirmbigdel=false #保证当需要同步的某个目录为空时,unison不会停止运转
21 log=true #表示在终端输出运行信息
22 logfile=/root/.unison/ixdba_10.10.log #记录日志
注:
4 5 指定/ixdba/webdata/www 和 /ixdba/webdata/upload 需要同步,/ixdba/webdata 下的其他目录不同步
5.测试,在A系统执行,查看B系统 /ixdba/webdata 是否有A系统的同步数据
修改B系统/ixdba/webdata的数据,再在A系统执行uniosn ixdba,看A系统/ixdba/webdata 是否一致
[root@A ~]# unison ixdba
6.总结 unison双向同步的基本原理:A将改动的同步到B,B将改动的同步到A,最后A、B的内容都相同
本文出自 “梦三国” 博客,谢绝转载!
unison实现数据双向同步