2009年2月20日 星期五

rsync的文章

公司的主機資料同步都是用rsync來做的
rsync 也有支援 SSH,也就是加密傳輸。
目前主機上就都是這樣在做的,但這些都是前人做好的

一直沒花時間去弄懂它..
直到前一陣子為了弄unix -> windows的資料同步
才把它稍微搞懂了一下

以下記錄網路上二篇文章的連結以及安裝過程跟所遇到的問題


介紹一下 rsync 這個同步備份程式
這一篇主要教了以下幾種方式的同步
unix -> unix
unix -> windows
windows -> unix
windows -> windows


然後....
Rsync + SSH — 讓 Server 自動異地備援也加密
這一篇就是講到怎麼讓rsync透過ssh來同步


下面記錄一下我的安裝過程

1.安裝cwrsync server(連結)

2.安裝完成後,在windows的服務裡,啟動 Openssh SSHD 和 RsyncServer 這兩個服務
註:若遇到無法啟動RsyncServer時,請先去C:\Program Files\cwRsyncServe下,把rsyncd.pid刪除,再啟動

3.把C:\Program Files\cwRsyncServer\var\SvcwRsync\.ssh\cwrsync 這個檔案丟到unix主機上
要執行rsync to windows.sh這個程式的user目錄下的.ssh裡面,權限設成600

4.設定windows上的rsync.conf以及要在unix上執行的shell script檔
註:這邊是利用在柚可椰小站所分享的shell script來做
要改的是restore to windows.sh中的
# identity: private key file for cwRsyncServer service account (available from Start Menu)
identity='/.ssh/cwrsync'

# which ps? /usr/ucb/ps for Solaris and /bin/ps for others
PS=/usr/ucb/ps

這二行,依自己的需求更改即可(修改cwrsync放的位置,以及ps這個程式所在的位置)
然後rsync.conf則是在C:\Program Files\cwRsyncServer\下
例:
[backupWeb]
path = /cygdrive/f/e-rent/web
read only = false
transfer logging = yes

節錄文章中二段比較需要注意的地方,script的用法,以及rsync.conf的設定說明以及使用restore to windows.sh的語法注意事項

cwRsync 的網站上介紹了一個 shell script 。我把那個 shell script 稍微改寫一下,改成 backup_from_windows.shrestore_to_windows.sh

backup_from_windows.sh 的用途是 windows -> unix,用法是
backup_from_windows.sh <windows_ip><windows_module><unix_directory>

restore_to_windows.sh 的用途是 unix -> windows,用法是
restore_to_windows.sh <windows_ip><unix_directory><windows_module>


另外要特別提一點,在 windows 的 rsyncd.conf 裡的一個標準的 module 寫法是像這樣

[test1]
path = /cygdrive/d/16
read only = false
transfer logging = yes


這個 module 的名稱是 test1 ,所定義的目錄是 D:\16,read only 是 false,所以除了備份之外也可以回存。所以想要在 unix 上把 windows 上的 D:\16 備份到 /work/16,就會下像這樣的指令,

backup_from_windows.sh 10.0.0.50 test1 /work/16

這樣 D:\16 下的所有目錄和檔案就會全部備份到 /work/16 去了。

但是,如果要把 /work/16 回存到 D:\16 的話,請記得要用 /work/16/ 而不是 /work/16,也就是說指令要這樣下,

restore_to_windows.sh 10.0.0.50 /work/16/ test1

如果不用 /work/16/ 而用 /work/16 的話,在 windows 裡的 D:\16 裡就會多一個目錄 D:\16\16,這就不是我們所期待的結果了。

這個部份的語法問題,在另一篇文章裡有說明到


上面用到的檔案若無法連結,我有自己上傳一份備用的
cwRsyncServer
back from windows.sh
restore to windows.sh

沒有留言: