您的位置:首页 > 其它

unison双向同步工具使用

2015-07-16 16:59 459 查看
unison简介
rsync数据镜像方式同步是单项的,客户端只保持与服务端同步,而客户端新增或删除一些文件时,并不会同步到服务器端。而unison则可以完成双向同步,任何一端数据发生改变,都会更新到对应端。unison采用OCaml语言进行开发,通过基于rsync算法对两端文件进行比较,将两端文件更新到一致状态

unison特性
跨平台

双向同步,自动更新两份副本中没有冲突的部分,有冲突的部分由用户选择更新策略

支持增量同步,每次同步完成后会记录文件状态,下次同步时,以上次的状态为起点开始同步

安装unison

首先要安装ocaml
# cd ocaml-4.02.1
# ./configure
# make world opt
# make install

# cd unison-2.48.3
# make UISTYLE=text THREADS=true

出现错误:
which: no etags in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/latest/bin:/usr/local/tomcat/bin:/root/bin)
/bin/sh: line 1: etags:command not found
make[1]: [tags] Error 127(ignored)
make[1]: Leavingdirectory `/unison/unison-2.48.3'
解决办法:
# yum install ctags-etags
# make UISTYLE=text THREADS=true

将unison命令复制到PATH路径下
# cp unison /usr/local/bin

unison命令使用

同步一台主机的两个目录

# unison /test1 /test2
远程同步

unison <本地目录> ssh://remote_IP/<绝对路径>
# unison /test1 ssh://192.168.1.13//test2
unison参数说明

testserver
测试联通性,连接到服务器就退出
unison / ssh://root@192.168.1.13/ -testserver

servercmd
告诉unison服务端unsion命令是什么
unison / ssh://root@192.168.1.13/ -testserver -seervercmd=/usr/local/bin/unison

auto
接收默认的动作,等待用户确认是否执行

batch
全自动模式,接受默认动作并执行

ignore
ignore xxx
同步时忽略的目录或路径

ignorecase
是否忽略文件名大小写

follow
follow xxx
是否跟随符号连接

patch
patch xxx
只同步指定的目录及文件,而非整个目录,可指定多次

owner group
同步属主 属组

perms = -1
保持读写权限

repeat

retry

sshargs = -C

xferbycopying

immutable xxx
指定不变化的目录,扫描时忽略

slient
静默模式

times
同步修改时间

masthreads n
最大线程数

rsync
默认ture,激活rsync传输模式

log
记录日志

logfile
日志文件

通过配置文件使用unison

同步本机和192.168.1.13的/www/mingxiao目录
首先本机要与192.168.1.13双机互信,具体方法不再写出

vim /root/.unison/ixbda.prf
root = /www/mingxiao  #要同步的文件夹
root =ssh://root@192.168.1.13//www/mingxiao #要同步的文件夹
#force = /www/mingxiao  #以本地文件为标准,将该目录同步到远程主机,开启后则变成单项同步
path = web1
path = web2 #只同步/www/mingxiao目录下的web1和web2目录
ignore = Path tmp #忽略同步/www/mingxiao/tmp目录
#prefer =ssh://root@192.168.1.13//www/mingxiao
batch = true  #全自动模式,接受并执行默认动作
maxthreads = 300 #同步时最大线程数
repeat = 1 #间隔一秒后,开始新一次同步检查
retry = 3 #重试次数
owner = true
group = true
perms = -1 #保持同步过来读写权限
sshargs = -C #使用ssh压缩传输方式

perms = -1
fastcheck = false #true表示同步时通过文件的创建时间来比较两地文件,若为false,则比较两地文件的内容。建议true
rsync = false
#debug = verbose
sshargs = -C
xferbycopying = true
confirmbigdel = false #默认值是true,表示当需要同步的两个目录一个为空时,unison将停止,这里设置为false,即便为空unison也不会停止运转
log = true
logfile = /tmp/unison.log


# unison ixbda即可开始同步
本文出自 “在路上” 博客,请务必保留此出处http://mingxiao.blog.51cto.com/8124243/1675361
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: