方案規劃
機房共有服務器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客戶端不用安裝。