Unison是一款跨windows

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Unison是一款跨windows/linux/MAC OS平臺的檔同步工具,不僅支持本地對本地同步,也支持通過SSH、RSH和Socket等網路通訊協定進行同步。

更棒的是,Unison支援雙向同步操作,你既可以從A同步到B,也可以從B同步到A,這些都不需要額外的設定。

遺憾的是,unison 無法實現即時雙向同步。

下面介紹unison的安裝及使用方法。

在安裝unison之前,需要安裝ocaml編譯器。

ocaml安裝
1.cd /tmp
2.wget http://caml.inria.fr/pub/distrib/ocaml-
3.12/ocaml-3.12.1.tar.gz
3.tar xzf ocaml-3.12.1.tar.gz
4.cd ocaml-3.12.1
5../configure
6.make world opt
7.make install
unison安裝
1.cd /tmp
2.wget /~bcpierce/unison//download/releases/stable/unison-2.40.6
3.tar.gz
3.tar xzf unison-2.40.63.tar.gz
4.cd unison-2.40.63
5.make UISTYLE=text
6.mkdir /root/bin
7.make install
8.cp /root/bin/unison /usr/bin/
unison的使用
如需要實現遠端雙向檔同步,兩台機子都需要安裝unison。

unison的連接傳輸方式有兩種:一是ssh,二是socket。

我們這裡先用比較安全的ssh。

所以為了不需要密碼連接,首先為它們配置金鑰。

配置雙機ssh信任
例假設本地機為:10.178.1.132(linux)
遠程機:10.178.1.110(solaris)
1. 在兩台機器上創建RSA金鑰
以下操作要在本地機和遠端機上都執行一遍
(1)以root 用戶登錄
(2)在root 使用者的主目錄內創建.ssh目錄並設置正確的許可權
[root@gsgatzhapp1 ~]# mkdir ~/.ssh
[root@gsgatzhapp1 ~]# chmod 700 ~/.ssh
(3)使用ssh-keygen命令生成第 2 版本的SSH 協議的RSA 金鑰
[root@gsgatzhapp1 ~]# ssh-keygen -t rsa
在提示保存私密金鑰(key)和公開金鑰(public key)的位置時,使用預設值。

如果需要私密金鑰密碼(passphrase),則輸入一個私密金鑰密碼(如果使用私密金鑰密碼,使用ssh執行遠端命令時需要輸入私密金鑰密碼,因此,本案例中未使用私密金鑰密碼),因此,直接回車即可。

2. 添加金鑰到授權金鑰文件(authorized key file)中
(1)以root 用戶登錄
(2)在本地機上執行
[root@gsgatzhapp1 ~] # cd ~/.ssh
[root@gsgatzhapp1.ssh]#ssh 10.178.1.132 cat /root/.ssh/id_rsa.pub >>authorized_keys
[oracle@gsgatzhapp1.ssh]#ssh 10.178.1.110 cat /root/.ssh/id_rsa.pub >>authorized_keys
[oracle@gsgatzhapp1.ssh]#scpauthorized_keys 10.178.1.110:/root/.ssh/
[oracle@gsgatzhapp1 .ssh]# chmod 600 /root/.ssh/authorized_keys
(3)在遠程機10.178.1.110 上:
bash-2.05# chmod 600 /root/.ssh/authorized_keys
(4)測詴
完成後,在gsgatzhapp1 上執行:
[root@gsgatzhapp1 ~]# ssh 10.178.1.132 date
[root@gsgatzhapp1 ~]#ssh 10.178.1.110 date
如果不需要輸入密碼就出現系統日期,說明SSH 配置成功。

unison使用方法
unison的命令格式為:unsion目錄1 目錄2 選項
例1:unison /home/dir1 /home/dir2
表示同步本地兩個目錄dir1和dir2。

例2:unison /home/dir1 ssh://192.168.1.2//root/dir
表示本地的目錄/home/dir1通過ssh同步遠端機器192.168.1.2的目錄/root/dir。

例3:unison /home/dir1 ssh://192.168.1.2//root/dir -batch
表示本地的目錄/home/dir1通過ssh同步遠端機器192.168.1.2的目錄/root/dir,並不需要回答任何問題直接同步,batch參數表示不需要回答問題。

下面是一些參數的解釋,更多的參數可以用命令unison -help查看。

unison參數說明
Unison有很多參數,這裡只介紹經常使用的幾個,詳細的請參看unison手冊:
•-testserver
測詴連通性,連接到伺服器即退出。

示例:
$ unison / ssh://opensou1@bluehost/ -servercmd=~/bin/unison -testserver
如果伺服器端unison 可執行檔不在預設目錄下,甚至沒有unison 命令(需要你編譯一個上傳到伺服器),則需要使用-servercmd參數告訴要執行的伺服器unison 命令位置。

使用-testserver參數,則成功連結即退出,也不會去執行目錄的比較等後續操作。

•-servercmd xxx
告訴unison,伺服器端的unison 命令是什麼。

參見上面的示例。

•-auto
接受缺省的動作,然後等待用戶確認是否執行。

•-batch
batch mode, 全自動模式,接受缺省動作,並執行。

•-ignore xxx
增加xxx 到忽略列表中
•-ignorecase [true|false|default]
是否忽略檔案名大小寫
•-follow xxx
是否支援對符號連接指向內容的同步
•owner = true (保持同步過來的文件屬主)
•group = true (保持同步過來的檔組資訊)
•perms = -1 (保持同步過來的文件讀寫許可權)
•repeat = 1 (間隔1秒後,開始新的一次同步檢查)
•retry = 3 (失敗重詴)
•sshargs = -C (使用ssh的壓縮傳輸方式)
•xferbycopying = true
•-immutable xxx
不變目錄,掃描時可以忽略
•-silent
安靜模式
•-times
同步修改時間
•-path xxx 參數
只同步-path 參數指定的子目錄以及檔,而非整個目錄。

-path 可以多次出現,例如
unison /home/username ssh://remotehost//home/username
-path shared
-path pub
-path .netscape/bookmarks.html
設定檔的使用
unison可以調用設定檔的方式使用,如unison rsync就是調用~/.unison/rsync.prf文件。

下面是我的一個web應用中兩個資料夾同步的配置資訊:
root = /sina/webdata
root = ssh://root@192.168.60.121//sina/webdata
#force =/sina/webdata
ignore = Path as/*
#prefer = ssh://root@192.168.60.121//sina/webdata
batch = true
#repeat = 1
#retry = 3
owner = true
group = true
perms = -1
fastcheck=false
rsync =false
#debug=verbose
sshargs = -C
xferbycopying = true
log = true
logfile = /root/.unison/sina_122.1547.log
說明如下:
兩個root表示需要同步的資料夾
force表示以本地的/var/www/bbsnew資料夾為標準,將該目錄同步到遠端。

注意,如果指定了force 參數,那麼unison就變成了單項同步了,也就是說會以force指定的資料夾為准進行同步.
Unison本身是可以雙向同步的,但是要做到雙向同步,就不要設置force參數,如果設置了force參數,就成了單項同步了,此時unison類似與sync.
Unison雙向同步基本原理是:假如有A B兩個資料夾,A資料夾把自己的改動同步到B,B資料夾也把自己的改動同步到A,最後A B兩資料夾的內容相同,是 A B資料夾的合集.
Unison雙向同步的一個缺點是,對於一個檔在兩個同步資料夾中都被修改時,unison是不會去同步的,因為unison無法判斷以那個為准.
ignore = Path表示忽略/sina/webdata下面的WEB-INF/tmp目錄,即同步時不同步它。

batch = true,表示全自動模式,接受缺省動作,並執行
-fastcheck true表示同步時使用檔的創建時間來比較兩地檔,如果這個選項為false,unison則將比較兩地檔的內容.建議設置為true
log = true表示在終端輸出運行資訊。

logfile則指定了同時將輸出寫入log檔。

定時同步的實現
unison很難做到即時同步,不過可以做到定時同步,配合cronjob就可以實現,如:crontab -e
0 3 * * * unison rsync。

相关文档
最新文档