unison 双向同步工具

Posted on Posted in linux
Tips: 本文创建于2015年11月3日,已超过 2 年,内容或图片可能已经失效!

unison

双向同步工具

  1. yum -y install glibc*  

[ocaml官网][1]

[unison官网][2]

  1. [root@localhost src]# tar zxvf ocaml-4.02.3.tar.gz  
  2. [root@localhost src]# cd ocaml-4.02.3  
  3. [root@localhost ocaml-4.02.3]# ./configure && make world opt && make install  
  4.   
  5. [root@localhost src]# tar zxvf unison-2.48.3.tar.gz  
  6. [root@localhost src]# cd unison-2.48.3  
  7. [root@localhost unison-2.48.3]# make UISTYLE=text THREADS=true STATIC=true  
  8. [root@localhost unison-2.48.3]# cp unison /usr/local/bin  

建立双击ssh信任

1、本机使用unison

  1. [root@localhost /]# unison /test1 test2  
  2. Contacting server...  
  3. Looking for changes  
  4. Warning: No archive files were found for these roots, whose canonical names are:  
  5.     /test1  
  6.     /test2  
  7. This can happen either  
  8. because this is the first time you have synchronized these roots,   
  9. or because you have upgraded Unison to a new version with a different  
  10. archive format.    
  11.   
  12. Update detection may take a while on this run if the replicas are   
  13. large.  
  14.   
  15. Unison will assume that the 'last synchronized state' of both replicas  
  16. was completely empty.  This means that any files that are different  
  17. will be reported as conflicts, and any files that exist only on one  
  18. replica will be judged as new and propagated to the other replica.  
  19. If the two replicas are identical, then no changes will be reported.  
  20.   
  21. If you see this message repeatedly, it may be because one of your machines  
  22. is getting its address from DHCP, which is causing its host name to change  
  23. between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME  
  24. environment variable for advice on how to correct this.  
  25.   
  26. Donations to the Unison project are gratefully accepted:   
  27. http://www.cis.upenn.edu/~bcpierce/unison  
  28.   
  29. Press return to continue.[<spc>] Reconciling changes  
  30.   
  31. test1          test2                
  32. file     ---->            1  [f] f  #force,表示强制同步  
  33. file     ---->            2  [f] f  
  34. file     ---->            3  [f] f  
  35. file     ---->            4  [f] f  
  36.   
  37. Proceed with propagating updates? [] y  #提示是否确认同步,如果输入?会有更详细的介绍  
  38. Propagating updates  
  39.   
  40.   
  41. UNISON 2.48.3 started propagating changes at 13:40:39.39 on 28 Oct 2015  
  42. [BGN] Copying 1 from /test1 to /test2  
  43. [END] Copying 1  
  44. [BGN] Copying 2 from /test1 to /test2  
  45. [END] Copying 2  
  46. [BGN] Copying 3 from /test1 to /test2  
  47. [END] Copying 3  
  48. [BGN] Copying 4 from /test1 to /test2  
  49. [END] Copying 4  
  50. UNISON 2.48.3 finished propagating changes at 13:40:39.40 on 28 Oct 2015  
  51.   
  52.   
  53. Saving synchronizer state  
  54. Synchronization complete at 13:40:39  (4 items transferred, 0 skipped, 0 failed)  

2、远程使用unison

  1. # 在远程主机和目录之间多加了一个 "/" 。  
  2. [root@localhost /]# unison /test1 ssh://root@192.168.1.153//test1  

3、通过配置文件来使用unison

unison的配置文件,在当前目录下的 .unison中,默认的配置文件名是default.prf,在.unison目录下可以有多个配置文件
运行命令

  1. [root@localhost /]# unison webdata.conf  
  2. [root@localhost /]# cat .unison/webdata.conf  
  3. root = /web1/webdata #表示同步的文件夹  
  4. root = ssh://192.168.1.153//web1/webdata #表示同步的文件夹  
  5. #force = /web1/webdata #表示以本地的/web1/webdata文件夹为标准,将该目录同步到远端。如果指定了force,那么unison就变成单项同步了。,也就是说以force指定的文件夹进行同步  
  6. path = www  #至此那个需要同步的两个目录分别是 /web1/webdata/www 和 /web1/webdata/upload  
  7. path = upload  
  8. ignore = Path WEB-INF/tmp   #忽略/web1/webdata下的 WEB-INF/tmp 目录,Path注意大小写  
  9. #prefer = ssh://192.168.1.153//web1/webdata  
  10. batch = true #表示全自动模式,接受并执行默认动作  
  11. maxthreads = 300 #最大线程数  
  12. #repeat = 1  
  13. #retry = 3  
  14. owner = true  
  15. group = true  
  16. perms = -1  
  17. fastcheck = false  
  18. rsync = false  
  19. #debug = verbose  
  20. sshargs = -C  
  21. xferbycopying = true  
  22. confirmbigdel = false   #默认为true,表示当需要同步的两个目录有一个为空时,unison将停止运行。  
  23. log = true  #表示在终端输出运行信息  
  24. logfile = /root/.unison/web1data.log    #将输出写入log文件  
  25.   
  26. unison缺点:一个文件在两个同步文件夹中都被修改时,unison不会进行同步,需要人工指定。  

4、unison参数说明

-testserver : 用来测试连通性,连接到服务器后就退出

  1. [root@localhost /]# unison  / ssh://root@192.168.1.153/ -testserver  
  2. Contacting server...  
  3. Connected [//local-centos01// -> //local-centos02//root]  

-servercmd : 用来告诉unison服务器端的unison命令是什么

  1. [root@localhost /]# unison / ssh://root@192.168.1.153/ -testserver -servercmd=/usr/bin/unison  
  2. Contacting server...  
  3. bash: /usr/bin/unison: No such file or directory  
  4. Fatal error: Lost connection with the server  

-auto : 表示接受默认的动作,然后等待用户执行是否执行

-batch : 表示全自动模式,接受默认动作并自动执行,无需认为干预

-ignore : 表示同步时可以忽略的目录或路径

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

follow : 表示是否支持对符号连接指向的内容同步,如果在同步时配置此参数,那么unison将在同步时跟踪符号连接指向的实际文件,然后进行同步

path : 表示只同步制定的子目录以及文件,而非整个目录。

  1. unison /home/username ssh://remotehost//home/username \  
  2. -path shared \  
  3. -path classwd \  
  4. -path .ssh/auto.fsck  

owner = true 表示同步的文件属主信息
group = true 表示同步过程中保持同步的文件组信息
perms = -1 表示在同步过程中保持同步文件的读写权限
repeat = 1 表示每隔1秒后开始一次新的同步检查
retry =3 制定失败重试次数
sshargs = -C 表示使用ssh的压缩传输方式
xferbycopying 这时个优化传输参数,默认是true
immutable xxx 制定不变化的目录,扫描时可以忽略
silent 出了错误,不打印任何信息
times 表示同步修改时间
maxthreads n 制定文件同步的最大线程数
rsync 默认值是true,用于激活rsync传输模式
log 表示记录unison运行日志,默认值是true
logfile 将unison日志信息输出到制定文件中

[1]: http://caml.inria.fr/download.en.html
[2]: http://www.seas.upenn.edu/~bcpierce/unison/

» 转载请注明来源:若我若鱼 » unison 双向同步工具

Leave a Reply

Your email address will not be published. Required fields are marked *

3 × one =