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便可開始同步

相關文章
相關標籤/搜索