利用Rsync搭建數據備份服務器

 

    方案規劃

機房共有服務器100多臺,其中有部分服務器的數據需要做異地備份,於是搭建一臺備份服務器,用於存放其他服務器需要備份的數據。

備份服務器爲192.168.100.223,採用Windows系統,原因就爲了方便,如果真到了需要恢復數據的時候,操作更熟悉,可以更快的恢復數據。備份軟件採用Rsync,Windows下爲cwRsync。

具體實施

一、windows到windows的數據同步

1、192.168.100.223上安裝cwRsync服務器端。

最好不要按默認路徑安裝,安裝路徑儘可能簡單,最好不要裝在Program File路徑下,因爲命名很奇怪,不僅長而且中間有個空格,有時候執行命令行操作會出現問題。

2、編輯rsyncd.conf文件

點“開始”-“所有程序”-“cwRsyncServer”-“rsyncd.conf”,將100.112模塊配置參數爲如下(其實只改了前兩行):

[100.112]

path = /cygdrive/e/100.112

read only = false

transfer logging = yes

3、啓動RsyncServer服務,並將啓動類型設爲自動。

4、在E盤下建立文件夾100.112

5、192.168.100.112上安裝cwRsync客戶端

6、建立批處理文件bak.bat,添加內容如下:

    "C:\cwRsync\bin\rsync.exe" -av /sygdrive/d/test/ [email protected]::100.112

參數a,歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD

參數v,詳細模式輸出

7、測試執行,在命令行窗口中執行bak.bat文件,提示錯誤invalid uid nobody 

8、修改服務器端配置文件:rsyncd.conf ,在文件中增加

uid = 0

gid = 0

保存後重啓RsyncServer服務。再執行bak.bat成功。但是仍有錯誤信息,這個後面會說。

注:uid = 0,gid = 0是針對匿名訪問的情況進行設置的,這樣客戶端同步時就不需要進行用戶驗證。如果不進行這樣的設置,客戶端同步時會出現“invalid uid nobody”或“invalid gid nobody”的錯誤提示。如果需要用戶驗證,就要進行另外的設置。

 

9、設置用戶驗證。

 

服務器端

在rsync.conf文件的[100.112]中添加以下內容(紅色部分)

[100.112]

path = /cygdrive/e/100.112

read only = false

transfer logging = yes

auth users = administrator

secrets file = /cygdrive/c/rsyncd.secrets

同時在c盤下建立rsyncd.secrets文件,編輯內容格式爲用戶名:密碼

如  administrator:123

然後重新啓動RsyncServer服務。

 

客戶端

編輯批處理文件bak.bat,添加以下內容(紅色部分)

"C:\cwRsync\bin\rsync.exe" -av --password-flie=/cygdriver/c/pwd.conf /cygdrive/d/test/ [email protected]::100.112

同時在c盤下建立文件pwd.conf,編輯內容爲密碼,如123

10、測試執行及故障的排除。

配置完成後執行批處理文件bak.bat,提示密碼文件的所有者必須是root

ERROR: password file must be owned by root when running as root

被這一問題困擾了很長時間,從網上也查不到很好的解決辦法,最後還是自己琢磨出來了。

解決方法:

在命令行窗口進入cwRsync安裝路徑的bin目錄下,

執行ls -l /cygdrive/c/pwd.conf,可以看到pwd.conf文件的所有者是4294967295,我了個去。

於是用命令修改,chown Administrator /cygdrive/c/pwd.conf

因爲按照提示把所有者改爲root,會提示root爲不可用的用戶 invalid user: `root'

所以試着把所有者改爲Administrator,再次ls -l 查看,看到所有者已經變更了

需要注意的是如果bin目錄下沒有ls.exe、chown.exe等文件,是因爲cwRsync客戶端不安裝這些文件,但是服務器端的bin目錄下是有的,所以需要把這些文件拷貝過來。我太有才了。

再次執行批處理,成功了,開始同步文件。

 

雖然能夠執行了,但是看執行的日誌還是有錯誤信息,failed to set times on "." 

從網上查了一下,好象是寫入的路徑沒有配置文件中uid和gid 的權限,但是uid和gid都是=0,不說是匿名嗎?迷糊。乾脆給這個路徑添加everyone用戶組的完全控制權限。

沒想到這麼一弄還真整成了,錯誤提示沒有了,同步執行也成功完成。我真太有才了。

至此,windows之間的cwRsync同步配置成功完成。

 

二、Linux到windows的數據同步

1、服務器端配置

在E盤下建立100.31文件夾,在rsyncd.conf文件中添加模塊100.31

[100.31]

path = /cygdrive/e/100.31

read only = false

transfer logging = yes

auth users = Administrator

secrets file = /cygdrive/c/rsync.secrets

2、客戶端配置

客戶端爲linux系統,地址爲192.168.100.31,建立測試文件夾/test,放入部分測試文件。

創建密碼文件rsync.pwd,並將權限設爲600,否則會報錯password file must not be other-accessible

執行同步命令

rsync -av --password-file=/etc/rsync.pwd /test/ [email protected]::100.31

執行成功,仍然提示failed to set times on "." ,跟剛纔一樣,把服務器端文件夾100.31添加everyone用戶組的完全控制權限,就沒問題了。

至此,Linux到windows的rsnyc數據同步配置完成,貌似linux的Rsync客戶端不用安裝。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章