设为首页 收藏本站
查看: 559|回复: 0

[经验分享] unison实现数据双向同步

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-25 13:22:27 | 显示全部楼层 |阅读模式
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

    [iyunv@A ~]# tar jxvf ocaml-3.10.2.tar.bz2
    [iyunv@A ~]# cd ocaml-3.10.2
    [iyunv@A ocaml-3.10.2]# make world opt
    [iyunv@A ocaml-3.10.2]# makeinstall
    2)安装unison 下载地址:http://pan.baidu.com/s/1o6hZJr8

    [iyunv@A ~]# tar zxvf unison-2.32.52.tar.gz
    [iyunv@A ~]# cd unison-2.32.52
    [iyunv@A unison-2.32.52]# make UISTYLE=text THREADS=true STATIC=true
注:UISTYLE=text THREADS=true STATIC=true 表示使用命令行方式,加入线程支持,以静态模式编译
    [iyunv@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目录并设置正确的权限
[iyunv@A ~]# mkdir /root/.ssh
[iyunv@A ~]# chmod 700 /root/.ssh
3)使用ssh-keygen命令生成第2版的SSH协议的RSA密钥
[iyunv@A ~]# ssh-keygen -t rsa
3.添加密钥到授权密钥文件中,在A系统中执行以下命令
1)

[iyunv@A ~]# cd /root/.ssh/
[iyunv@A .ssh]# ssh 192.168.5.205 cat /root/.ssh/id_rsa.pub >>authorized_keys
[iyunv@A .ssh]# ssh 192.168.5.206 cat /root/.ssh/id_rsa.pub >>authorized_keys
[iyunv@A .ssh]# scp authorized_keys 192.168.5.206:root/.ssh
[iyunv@A .ssh]# chmod 600 /root/.ssh/authorized_keys
2)在B系统执行如下命令
[iyunv@B ~]# chmod 600 /root/.ssh/authorized_keys
3)分别在两台机器上执行如下测试,第一次执行时,会要求输入密码信息,再次执行时,不需要输入密码就能显示系统日期,说明ssh互相信任配置成功
[iyunv@A .ssh]# ssh 192.168.5.205 date
Wed Sep 24 17:23:50 HKT 2014
[iyunv@A .ssh]# ssh 192.168.5.206 date
Wed Sep 24 17:24:50 CST 2014
[iyunv@B ~]# ssh 192.168.5.206 date
Wed Sep 24 17:25:20 CST 2014
[iyunv@B ~]# ssh 192.168.5.205 date
Wed Sep 24 17:24:37 HKT 2014
4)测试
[iyunv@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
[iyunv@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 是否一致

[iyunv@A ~]# unison ixdba
6.总结 unison双向同步的基本原理:A将改动的同步到B,B将改动的同步到A,最后A、B的内容都相同




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25392-1-1.html 上篇帖子: 企业批量部署RealVNC远程控制软件 下篇帖子: linux网卡信息和驱动研究
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表