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參數說明
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便可開始同步