unison双向同步工具使用

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

  1. testserver

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

    unison /  ssh://[email protected]/ -testserver

  2. servercmd

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

    unison /  ssh://[email protected]/ -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://[email protected]//www/mingxiao #要同步的文件夹
#force = /www/mingxiao  #以本地文件为标准,将该目录同步到远程主机,开启后则变成单项同步
path = web1
path = web2 #只同步/www/mingxiao目录下的web1和web2目录
ignore = Path tmp #忽略同步/www/mingxiao/tmp目录
#prefer =ssh://[email protected]//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即可开始同步

你可能感兴趣的:(同步,unison)