unison双向同步工具使用

unison简介java

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


unison特性算法

  • 跨平台vim

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

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



安装unison服务器


首先要安装ocamlssh

# cd ocaml-4.02.1ide

# ./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参数说明

  1. testserver

    测试联通性,链接到服务器就退出

    unison /  ssh://root@192.168.1.13/ -testserver

  2. servercmd

    告诉unison服务端unsion命令是什么

    unison /  ssh://root@192.168.1.13/ -testserver -seervercmd=/usr/local/bin/unison

  3. auto

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

  4. batch

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

  5. ignore

    ignore xxx

    同步时忽略的目录或路径

  6. ignorecase

    是否忽略文件名大小写

  7. follow

    follow xxx

    是否跟随符号链接

  8. patch

    patch xxx

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

  9. owner      group

    同步属主   属组

  10. perms = -1

    保持读写权限

  11. repeat

  12. retry

  13. sshargs = -C

  14. xferbycopying

  15. immutable xxx

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

  16. slient 

    静默模式

  17. times

    同步修改时间

  18. masthreads n

    最大线程数

  19. rsync

    默认ture,激活rsync传输模式

  20. log

    记录日志

  21. 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便可开始同步

相关文章
相关标签/搜索