1. 程式人生 > >cwRsync檔案同步

cwRsync檔案同步

眾所周知,Linux系統可以用rsync來實現檔案或目錄的同步,windows系統下也一樣可以。我們現在就用cwRsync來實現windows server 2008系統下的檔案同步。

一、系統環境

作業系統:Windows server 2008 R2

更新源伺服器:192.168.0.108

目的伺服器:192.168.0.132

服務端:cwRsyncServer_4.1.0_Installer

客戶端:cwRsync_4.1.0_Installer

二、更新源伺服器安裝配置(cwRsync服務端)

1. 雙擊cwRsyncServer_4.1.0_Installer.exe開啟安裝介面,然後就一路下一步,安裝cwRsync服務端預設有一個管理員帳戶SvcCWRSYN,可自行設定使用者名稱和密碼。

2. 修改RsyncServer的配置檔案(C:\Program Files (x86)\ICW\rsyncd.conf)

  1. use chroot = false  #不使用chroot 
  2. strict modes = false  #靜態模式 
  3. hosts allow = *  #配置全域性哪些IP可以訪問 
  4. log file = rsyncd.log  #log檔名,可以指定路徑 
  5. pid file = rsyncd.pid 
  6. port = 8173  #預設埠873 
  7. uid = 0  #不指定uid,不加這一行將無法使用任何賬戶 
  8. gid = 0  #不指定gid 
  9. max connections = 10  #最大連線數10 
  10. lock file = rsyncd.lock 
  11. # Module definitions 
  12. # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work 
  13. [test] 
  14. path = /cygdrive/f/xuad  #需要同步的路徑(F:\xuad目錄) 
  15. read only = false  #只讀許可權 
  16. transfer logging = yes  #記錄傳輸日誌 
  17. ignore errors  #忽略無關的IO錯誤 
  18. list = no  #不列檔案表 
  19. hosts allow = 192.168.0.132/255.255.255.0  #允許訪問的IP地址 
  20. hosts deny = *  #不允許hosts allow以外的任何IP訪問 

3. 安裝完成後,在“服務”裡面就可以看到cwRsync對應的服務了,安裝完成後需要手動啟動該服務。將RsyncServer的啟動方式設定成自動,然後啟動該服務。注:針對需要同步的目錄,別忘記給SvcCWRSYNC使用者讀取的許可權。

4. 用netstat –anp tcp檢視8173埠是否已監聽,在客戶端伺服器telnet 192.168.0.108 8173看埠是否已通。

 

三、目的伺服器安裝配置(cwRsync客戶端)

1. 雙擊cwRsync_4.1.0_Installer.exe開啟安裝介面,然後一路下一步,直到安裝完成。

2. 手動測試同步

在路徑C:\Program Files\cwRsync\bin下輸入rsync.exe -avzP --progress –delete rsync://192.168.0.108:8173/test /cygdrive/f/xuad,出現如下圖資訊說明同步成功。

 

 

引數說明

-a 引數,相當於-rlptgoD,

-r 是遞迴

-l 是連結檔案,意思是拷貝連結檔案;

-p 表示保持檔案原有許可權;

-t 保持檔案原有時間;

-g 保持檔案原有使用者組;

-o 保持檔案原有屬主;

-D 相當於塊裝置檔案;

-z 傳輸時壓縮;

-P 傳輸進度;

-v verbose,詳細模式輸出;

-u是隻同步已經更新的檔案,避免沒有更新的檔案被重複更新一次,不過要注意兩者機器時鐘的同步;

--progress 顯示備份過程;

--delete 刪除那些DST中SRC沒有的檔案,用作同步檔案用;

3.定時自動更新配置

(1)編寫rsync.bat批處理指令碼

  1. @echo off 
  2. set rsynclog="C:\rsynclog\rsync.log" 
  3. set nowtime=%date:~0,10% %time% 
  4. echo %nowtime% >> %rsynclog% 
  5. cd /d C:\"Program Files"\cwRsync\bin 
  6. rsync.exe -avzPu --progress --delete rsync://192.168.0.108:8173/test /cygdrive/c/xuad >> %rsynclog% 
  7. @echo -------------------------------------------------- >> %rsynclog% 
  8. @echo. >> %rsynclog% 

 

(2)設定計劃任務(每5分鐘同步一次)

開始-管理工具-任務計劃程式

右擊“任務計劃程式本地”,開啟建立任務介面。輸入姓名(任務名稱),選擇啟動任務的帳戶,選中“不管使用者是否登入都要執行”。

點選“觸發器”-“新建”,開啟新建觸發器介面。按下圖進行設定,每5分鐘同步一次。

點選“操作”-“新建”,開啟新建操作介面。按下圖進行設定,選擇之前編輯好的bat指令碼,然後“確定”。

“條件”和“設定”均使用預設設定,然後“確定”,輸入執行此任務的使用者帳戶的密碼,點選“確定”,建立任務計劃完成。

 

四、測試中出現的錯誤

1. 命令輸入錯誤

紅框標記出來的地方應該是rsyncd.conf檔案裡的模組名,而不是同步目錄名。

2.防火牆阻止了此埠

需要在防火牆的入站規則裡新增一條允許此埠的規則。

五、重要說明

    對於多臺伺服器做檔案同步,最好是連同資料備份一起做了。舉個例子:有A、B、C、D四臺伺服器,需要保證四臺伺服器一個或多個目錄的資料一致性,也就是 BCD需要從A上同步一個或多個目錄的資料,那麼A就是更新源伺服器,BCD就是目的伺服器。現在有個問題,當A的資料出現問題或丟失,那麼BCD三臺的 資料都會出現問題並且丟失,為了保證A的資料一定是正確的,我們在更新A伺服器之前,就要先對A做資料備份。下面是個簡單的bat指令碼,可以實現資料的自 動備份並上傳至FTP伺服器,可以把它加入到任務計劃裡面定期執行它。

Backup.bat指令碼內容如下:

  1. @echo off 
  2.  
  3. set today=%date:~0,10% 
  4. set nowh=%time:~0,2% 
  5. set nowtime=%date:~0,10% %time% 
  6. set rar="c:\Program Files\WinRAR\rar.exe" 
  7. set ftplist="E:\baklog\ftpls.txt" 
  8. set baklog="E:\baklog\backup.log" 
  9. set FtpSrv=192.168.0.109 
  10. set FtpPort=21 
  11. set FtpUser=bak 
  12. set FtpPwd=bak1q2w3e 
  13. echo %nowtime% >> %baklog% 
  14.  
  15. ::Rar files 
  16. %rar% a E:\backup\backup_%today%_%nowh%.rar F:\xuad >> %baklog% 
  17.  
  18. ::Upload files by ftp 
  19. echo open %FtpSrv% %FtpPort% > %ftplist% 
  20. echo user %FtpUser% %FtpPwd% >> %ftplist% 
  21. echo cd backup >>%ftplist% 
  22. echo bin >> %ftplist% 
  23. echo prompt >> %ftplist% 
  24. echo lcd E:\backup  >>%ftplist% 
  25. echo Put backup_%today%_%nowh%.rar >> %ftplist% 
  26. echo quit   >> %ftplist% 
  27. echo bye    >> %ftplist% 
  28. ftp -n -s:%ftplist% >> %baklog% 
  29.  
  30. echo. > %rarlist% 
  31. @echo -------------------------------------------------- >> %baklog% 
  32. @echo. >> %baklog%