linux unison数据同步,linux下unison双向数据实时同步

Linux下通过源码包编译安装Unison时,需要用到ObjectiveCamlcompiler。

通过以下方式安装

[root@vm1~]#wgethttp://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz

[root@vm1~]#tar-xzvfocaml-3.12.1.tar.gz

[root@vm1~]#cdocaml-3.12.1

[root@vm1ocaml-3.12.1]#./configure

[root@vm1ocaml-3.12.1]#makeworldopt

[root@vm1ocaml-3.12.1]#makeinstall

编译安装Unison

[root@vm1~]#tar-xzvfunison-2.40.63.tar.gz

[root@vm1~]#cdunison-2.40.63

[root@vm1unison-2.40.63]#makeUISTYLE=textTHREADS=trueSTATIC=true

执行的时候出现错误

valmap:(‘a->‘b)->‘at->‘btvalmapi:(key->‘a->‘b)->‘at->‘btend

Thefield`split’isrequiredbutnotprovided

Thefield`choose’isrequiredbutnotprovided

Thefield`max_binding’isrequiredbutnotprovided

Thefield`min_binding’isrequiredbutnotprovided

Thefield`bindings’isrequiredbutnotprovided

Thefield`cardinal’isrequiredbutnotprovided

Thefield`partition’isrequiredbutnotprovided

Thefield`filter’isrequiredbutnotprovided

Thefield`exists’isrequiredbutnotprovided

Thefield`for_all’isrequiredbutnotprovided

Thefield`merge’isrequiredbutnotprovided

Thefield`singleton’isrequiredbutnotprovidedmake:***[update.cmx]

解决方法:

修改update.mli把第四行的moduleNameMap:Map.Swithtypekey=Name.t改成moduleNameMap:MyMap.Swithtypekey=Name.t

[root@vm1unison-2.40.63]#makeinstall

在执行makeinstall的过程中,可能会出现以下错误提示:

mv:cannotstat'/root/bin//unison':Nosuchfileordirectory

make:[doinstall]Error1(ignored)

cpunison/root/bin/

cp:cannotcreateregularfile'/root/bin/':Isadirectory

make:***[doinstall]Error1

出现错误的原因在与Unison默认是将文件Copy到/root/bin目录,但Linux默认是没有该目录的,因此我们需要将生成的可执行文件unison复制到系统的PATH目录。

[root@vm1unison-2.40.63]#cpunison/usr/local/bin

在AB两台机器上部署ssh无密码连接,AB两台机器上关于unison的安装过程是一样的

执行unison命令之后会在根目录下生成unison隐藏文件

主机A的unison配置文件

[root@centos1~]#cd/root/.unison/

默认有一个default.prfunison的默认配置文件

[root@centos1.unison]#videfault.prf

#Unisonpreferencesfile

root=/logs

root=ssh://root@192.168.8.9//logs

#force=

ignore=Pathtest

ignore=Pathtest1

batch=true

#repeat=1

#retry=3

owner=true

group=true

perms=-1

fastcheck=true

rsync=false

sshargs=-C

confirmbigdel=false

xferbycopying=true

log=true

logfile=/root/.unison/unison.log

主机B的unison配置文件

root=/logs

root=ssh://root@192.168.8.8//logs

#force=

ignore=Pathtest

ignore=Pathtest1

batch=true

#repeat=1

#retry=3

owner=true

group=true

perms=-1

fastcheck=true

rsync=false

sshargs=-C

confirmbigdel=false

xferbycopying=true

log=true

logfile=/root/.unison/unison.log

配置文件参数

force表示会以本地所指定文件夹为标准,将该目录同步到远端。这里需要注意,如果指定了force参数,那么Unison就变成了单项同步了,也就是说会以force指定的文件夹为准进行同步,类似与rsync。

Unison双向同步基本原理是:假如有AB两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后AB两文件夹的内容相同,是AB文件夹的合集。

Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准。

ignore=Path表示忽略指定目录,即同步时不同步它。

batch=true,表示全自动模式,接受缺省动作,并执行。

fastchecktrue表示同步时仅通过文件的创建时间来比较,如果选项为false,Unison则将比较两地文件的内容。

confirmbigdel=false默认为true遇到空文件夹停止

log=true表示在终端输出运行信息。

logfile指定输出的log文件。

另外,Unison有很多参数,这里仅介绍常用的几个,详细的请参看Unison手册。

auto//接受缺省的动作,然后等待用户确认是否执行。

batch//batchmode,全自动模式,接受缺省动作,并执行。

ignorexxx//增加xxx到忽略列表中

ignorecase[true|false|default]//是否忽略文件名大小写

followxxx//是否支持对符号连接指向内容的同步

owner=true//保持同步过来的文件属主

group=true//保持同步过来的文件组信息

perms=-1//保持同步过来的文件读写权限

repeat=1//间隔1秒后,开始新的一次同步检查

retry=3//失败重试

sshargs=-C//使用ssh的压缩传输方式

xferbycopying=true"

pathxxx参数//只同步-path参数指定的子目录以及文件,而非整个目录,path可以多次出现

在A、B上执行unison开始同步

在AB上自动同步编写脚本文件

[root@centos1.unison]#viunison.sh

whiletrue;do

/usr/local/bin/unison

sleep3

done

相隔三秒同步一次

[root@centos1.unison]chmod+xunison.sh

[root@centos1.unison]nohupshunison.sh&

由于源码与图片太多所以日志增长的很快所以写清除脚本

[root@nginxshell]#viclear.sh

cat/dev/null>/root/.unison/nohup.out

cat/dev/null>/root/.unison/unison.log

添加定时任务

**/2***/shell/clear.sh

每隔两个小时清理一次日志文件

Unison双向同步基本原理是:假如有AB两个文件夹,A文件夹把自己的改动同步到B,B文件夹也把自己的改动同步到A,最后AB两文件夹的内容相同,是AB文件夹的合集.

Unison双向同步的一个缺点是,对于一个文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值