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

  1. 在A系统安装ocaml和unison

    1)安装ocaml    下载地址:http://pan.baidu.com/s/1dDGNZ25

    [[email protected] ~]# tar jxvf ocaml-3.10.2.tar.bz2
    [[email protected] ~]# cd ocaml-3.10.2
    [[email protected] ocaml-3.10.2]# make world opt

    [[email protected] ocaml-3.10.2]# makeinstall

    2)安装unison 下载地址:http://pan.baidu.com/s/1o6hZJr8

[[email protected] ~]# tar zxvf unison-2.32.52.tar.gz

[[email protected] ~]# cd unison-2.32.52
    [[email protected] unison-2.32.52]# make UISTYLE=text THREADS=true STATIC=true

注:UISTYLE=text THREADS=true STATIC=true 表示使用命令行方式,加入线程支持,以静态模式编译

[[email protected] unison-2.32.52]# cp unison /usr/local/bin/

注:在B系统里也要装ocaml和unison,步骤与上面一样

2.配置A系统和B系统ssh信任

以下操作要在A系统和B系统都执行一遍,这里以A系统为例

1)以root用户登录

2)在root用户的主目录内创建 .ssh目录并设置正确的权限

[[email protected] ~]# mkdir /root/.ssh

[[email protected] ~]# chmod 700 /root/.ssh

3)使用ssh-keygen命令生成第2版的SSH协议的RSA密钥

[[email protected] ~]# ssh-keygen -t rsa

3.添加密钥到授权密钥文件中,在A系统中执行以下命令

1)

[[email protected] ~]# cd /root/.ssh/
[[email protected] .ssh]# ssh 192.168.5.205 cat /root/.ssh/id_rsa.pub >>authorized_keys
[[email protected] .ssh]# ssh 192.168.5.206 cat /root/.ssh/id_rsa.pub >>authorized_keys

[[email protected] .ssh]# scp authorized_keys 192.168.5.206:root/.ssh

[[email protected] .ssh]# chmod 600 /root/.ssh/authorized_keys

2)在B系统执行如下命令

[[email protected] ~]# chmod 600 /root/.ssh/authorized_keys

3)分别在两台机器上执行如下测试,第一次执行时,会要求输入密码信息,再次执行时,不需要输入密码就能显示系统日期,说明ssh互相信任配置成功

[[email protected] .ssh]# ssh 192.168.5.205 date
Wed Sep 24 17:23:50 HKT 2014
[[email protected] .ssh]# ssh 192.168.5.206 date
Wed Sep 24 17:24:50 CST 2014

[[email protected] ~]# ssh 192.168.5.206 date
Wed Sep 24 17:25:20 CST 2014
[[email protected] ~]# ssh 192.168.5.205 date
Wed Sep 24 17:24:37 HKT 2014

4)测试

[[email protected] .ssh]# unison / ssh://192.168.5.206/ -testserver
Contacting server...
Connected [//A//test -> //B//root]

4.通过命令远程使用unison

如:

unison /test ssh://[email protected]//test

表示将本机的/test 和远程主机的/test 同步 ,注意需要交互 输入回车,输入y确认

5.通过配置文件来使用unsion

在A系统操作

1) /root/.unison 用于保存unison的配置文件,如果是root用户,则位于/root/.unison

在/root/.unison目录下,如果不指定配置文件的名称,则默认是default.prf

创建/root/.unison/ixdba.prf

[[email protected] ~]# vim /root/.unison/ixdba.prf
 1 root =  /ixdba/webdata      #表示本机要同步的目录

2 root = ssh://[email protected]//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://[email protected]//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 是否一致

[[email protected] ~]# unison ixdba

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

时间: 2024-11-05 13:50:10

unison实现数据双向同步的相关文章

Unison+inotify实现两个主机目录之间的数据双向同步

软件包的下载地址: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 3 安装部署:两个服务器安装 unison 和ocaml,inotify ##编译安装ocaml,uni

Linux下利用Unison实现文件双向同步

一.Unison简介Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:1.跨平台使用:2.对内核和用户权限没有特别要求:3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,

Linux下 Unison 实现文件双向同步

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hx100.blog.51cto.com/44326/612301 一.Unison简介Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:1.跨平台使用:2.对内核和用户权限没有特别要求:3.Unison是双向的,它能

unison+inotify实现数据实时双向同步

1.unison简介 Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致,也支持经由过程SSH.RSH和Socket同步支持双向同步.Unison有文字界面和图形界面,这里只介绍如何在文字界面下使用. unison拥有其它一些同步工具或文件系统的相同特性,也有自己的特点,可以跨平台使用,对内核和用户权限没有特别要求,unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:只要是

unison双向同步工具使用

unison简介 rsync数据镜像方式同步是单项的,客户端只保持与服务端同步,而客户端新增或删除一些文件时,并不会同步到服务器端.而unison则可以完成双向同步,任何一端数据发生改变,都会更新到对应端.unison采用OCaml语言进行开发,通过基于rsync算法对两端文件进行比较,将两端文件更新到一致状态 unison特性 跨平台 双向同步,自动更新两份副本中没有冲突的部分,有冲突的部分由用户选择更新策略 支持增量同步,每次同步完成后会记录文件状态,下次同步时,以上次的状态为起点开始同步

inotify+unison双向同步环境部署

在网上搜寻了很多方案,在liux下做文件同步,有如下几种方式: 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rsync+sersync更快更节约资源实现web数据同步 4.unison+inotify实现web数据双向同步 在这里详细介绍第四种方案,前几种都有些各自的不足.只有第四种方案支持双向实时同步,且当其中一台服务器宕机,也不会影响web的访问.(ps:之前一直喜欢nfs,配置非常简单,但是其有个致命的缺点就是其中一台web服务挂掉之后,会直接导致

MySQL Dual-Master 双向同步

本文介绍的Mysql Dual-Master 复制实施方法可能不是最完美.最强大的.但是在我的应用环境下能很好的满足各项需求. 本文基于我们仅仅使用两台MySQL服务器的情况下,但是你会发现文章中介绍的方法可以很方便的应用于多台服务器的环境下.同样地,我们假设您将用于同步复制的数据库已经在其中一台MySQL服务器上建好了.最后,在开始所有工作之前,我们必须调整所有服务器的防火墙策略以保证彼此能访问对方的3306端口. 环境: 操作系统:CentOS 5.4 x86 MySQL版本:5.0.77

windows下 MySQL数据库双向同步 配置步骤

      最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下的完整配置,与大家分享,如有不足之处, 请大家指正.   工具/原料 两台服务器,操作系统均为window2012 数据中心版,其中一台服务器为A,IP地址为:192.168.1.2,另外一台为B,IP地址为:192.168.1.3 mysql  的版本最好保持一致,大版本号一定要一致,小更新不影响

利用unison+inotify 实现数据双向实时同步

利用unison+inotify 实现数据双向实时同步 环境:Centos 6.5 64位 server1 :192.168.1.201 server2 :192.168.1.250 需求软件:ocaml unison inotify 我这里全是使用yum安装的,若是喜欢使用源码编译安装的可以官网下载源码包. yum install ocaml unison inotify 第一步:保证两台服务器之间可以通过ssh无密码访问,为了安全,需要创建一个普通用户: 两边执行的步骤一样: useradd