Windows下的Rsync同步工具--CwRsync

文件同步工具CwRsync的使用方法及常用命令詳解

cwRsync是一款基於Linuxwindows平臺的高效文件同步工具,它支持windowsLinuxwindowswindowsLinuxwindows之間的文件同步,它可以自動同步,包括文件的更新、刪除、重命名等等,功能十分強大。

一、軟件簡介:

       cwRsync是基於cygwin平臺的rsync軟件包,支持windowswindowswindowsLinuxLinuxwindows高效文件同步。由於CwRsync已經集成了cygwin類庫,因此安裝的時候可以省去cygwin包。Cwrsync還集成了OpenSSH for windows,可以實現Linux Rsync一模一樣的操作。

       使用 cwRsync 來同步文件後,只需要對一臺主服務器進行文件修改,其他鏡像服務器可以自動同步,包括文件的更新、刪除、重命名等。

       cwRsync數據備份可防止因存儲設備損壞造成的損失,是管理員一項重要的工作,實現數據遠程備份很多方法,最簡單的方法就是使用ftp或類似工具或腳本, 但是這種方法每次都需要將所有文件和數據都重新在網絡上傳輸一遍, 而不考慮哪些文件是新增的或更新的,因此效率非常低下,在備份數據量很大時,需要花費更長的時間在網絡上進行數據傳輸。

二、軟件的下載與安裝:

         1、下載cwRsync 4.1.0軟件,軟件下載地址:

                     cwRsync 4.1.0客戶端:http://soft.huweishen.com/soft/307.html

                     cwRsync服務器端:http://soft.huweishen.com/soft/308.html

       2、軟件的安裝:

       下載完成後分別將他們解壓到任意位置,客戶端軟件雙擊:“cwRsync_4.1.0_Installer.exe”,服務器端軟件雙擊“cwRsyncServer_4.1.0_Installer.exe”即可開始安裝操作,和普通安裝操作沒什麼區別,直接下一步即可完成安裝,但值得注意的是服務器端安裝設置用戶名和密碼的時候,如果你採用系統給出的用戶名和密碼的話需要牢記該用戶名和密碼,當然你也可以自行設置,由於系統給出的用戶名和密碼一般都較複雜,所以小編建議自行設置,以免用戶名和密碼遺忘。

 

wKioL1RNvE3zPraNAAEbZk10byE874.jpg

圖一:系統自動分配用戶名和密碼

這一步很重要,可以說是cwRsync安裝成功與否的關鍵。這一步要求輸入當前系統存在的賬號密碼,用來啓動RsyncServer服務,這個賬號需要在安裝前就要在Windows服務器上建立好,因爲安裝程序不會自動創建。如果這個賬號沒有提前創建好的話,系統服務裏將不會出現RsyncServer服務。

三、服務器端的配置:

       1、修改cwRsync服務器端配置文件rsyncd.conf(在cwRsyncServer的安裝目錄下)

use chroot = false                     #不使用chroot 
strict modes = false                   #靜態模式 
hosts allow = *                        #所有IP均可 
log file = rsyncd.log                  #log文件名,可以指定路徑 
pid file = rsyncd.pid                  #pid文件名,可以指定路徑 
port = 8173                            #默認端口873 
uid = 0                                #不指定uid,不加這一行將無法使用任何賬戶 
gid = 0                                #不指定gid 
max connections = 10                   #最大連接數10 
 
# Module definitions 
# Remember cygwin naming conventions : c:work becomes /cygwin/c/work 
[SVN] 
path = /cygdrive/d/Repositories        #需要備份的路徑(D盤www/huweishen目錄) 
read only = false                      #只讀 
transfer logging = yes                 #記錄傳輸日誌 
ignore errors                          #忽略無關的IO錯誤 
list = no                              #不列文件表 
hosts allow = 192.168.1.0/255.255.255.0 #允許訪問的IP 
hosts deny = *                         #不允許hosts allow以外的任何IP訪問 
auth users = SvcCWRSYNC                #認證用戶名(Windows系統必須存在此用戶)
secrets file = rsync.password          #認證用戶的用戶名和密碼存儲位置

 

       2、在cwRsyncServer的安裝目錄下,使用記事本程序建立一個rsync.password的文件,在裏面添加用戶名和密碼等信息,

格式如下:

       認證用戶名:剛纔記錄下來的密碼

       SvcCWRSYNC:J1yv3SIZe3m56f

注:用戶名是可以重新指定的,但是要在該用戶名和密碼建立的前提下纔可以。

       3、在windows服務列表中,啓動“RsyncServer”服務,爲了使使用方便,你可以將RsyncServer服務的屬性修改爲自動啓動,然後在使用netstat an命令看8173端口被監聽沒。

 wKiom1RNwIOCf5sTAAFQARRXRuI998.jpg

圖二:啓動RsyncServe服務

 

       4、再將RsyncServer添加到windows防火牆默認列表中,以免在使用的時候被防火牆阻止,產生莫名的錯誤。添加方法在允許列表中添加:“C:\Program Files (x86)\ICW\binrsync.exe”,並在:“Control Panel\All Control Panel Items\Windows Firewall\Customize Settings”中將:“Public network location settings”設置成關閉即可。

四、客戶端的配置

       1、在客戶端的安裝目錄下建立一個rsync.password文件,在文件中輸入服務器端指定用戶的密碼,如下圖所示:(客戶端只需要填寫密碼即可)

 wKiom1RNwKezOstRAADF9umIMbE071.jpg

 圖三:客戶端創建.password文件

 

2cwRsync簡單使用實例:

   打開dos窗口,由於必須要在rsync.exe所在目錄下運行命令,所以先cdcwRsyncbin目錄下,然後在執行命令:

# cd ' C:\Program Files\cwRsync\bin '
# rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/SvcwRsync.ps<p.txt

3、添加定時任務

首先配置一個批量處理腳本rsync.bat內容如下:(放到客戶端安裝目錄的bin文件下)

@echo off
set RSYNC_HOME= C:\Program Files\cwRsync\bin
cd %RSYNC_HOME%
rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/rsync.password<p.txt [email protected]::SVN /cygdrive/e/SvnBackupData
#說明,"<p.txt"部分後面錯誤總結會講到。

 

wKioL1RNwXHAb15MAAF4uRyQ6cA836.jpg

wKiom1RNwSGjeSb1AAFMw7LKvlk149.jpg

wKioL1RNwXiCUCipAAEDHVkfiz4797.jpg

wKiom1RNwSexyLvbAAEZ7ifc3wc000.jpg

wKioL1RNwYqj3uCEAAQ7vc55YGM519.jpg

wKiom1RNwTvynkvvAAFlNcTjTc8020.jpg

wKioL1RNwZexObXgAAIE_4IzdoY430.jpg

wKioL1RNwaOgcbaMAAOeeoiGcuI492.jpg

 

附錄一:cwRsync命令參數詳解

 

-v, --verbose 詳細模式輸出

-q, --quiet 精簡輸出模式

-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗

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

-r, --recursive 對子目錄以遞歸模式處理

-R, --relative 使用相對路徑信息

-b, --backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名爲~filename。可以使用--suffix選項來指定不同的備份文件前綴。

--backup-dir 將備份文件(如~filename)存放在在目錄下。

-suffix=SUFFIX 定義備份文件前綴

-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)

-l, --links 保留軟鏈結

-L, --copy-links 想對待常規文件一樣處理軟鏈結

--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結

--safe-links 忽略指向SRC路徑目錄樹以外的鏈結

-H, --hard-links 保留硬鏈結

-p, --perms 保持文件權限

-o, --owner 保持文件屬主信息

-g, --group 保持文件屬組信息

-D, --devices 保持設備文件信息

-t, --times 保持文件時間信息

-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間

-n, --dry-run現實哪些文件將被傳輸

-W, --whole-file 拷貝文件,不進行增量檢測

-x, --one-file-system 不要跨越文件系統邊界

-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節

-e, --rsh=COMMAND 指定使用rsh、ssh方式進行數據同步

--rsync-path=PATH 指定遠程服務器上的rsync命令所在路徑信息

-C, --cvs-exclude 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件

--existing 僅僅更新那些已經存在於DST的文件,而不備份那些新創建的文件

--delete 刪除那些DST中SRC沒有的文件

--delete-excluded 同樣刪除接收端那些被該選項指定排除的文件

--delete-after 傳輸結束以後再刪除

--ignore-errors 及時出現IO錯誤也進行刪除

--max-delete=NUM 最多刪除NUM個文件

--partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸

--force 強制刪除目錄,即使不爲空

--numeric-ids 不將數字的用戶和組ID匹配爲用戶名和組名

--timeout=TIME IP超時時間,單位爲秒

-I, --ignore-times 不跳過那些有同樣的時間和長度的文件

--size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間

--modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認爲0

-T --temp-dir=DIR 在DIR中創建臨時文件

--compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份

-P 等同於 --partial

--progress 顯示備份過程

-z, --compress 對備份的文件在傳輸時進行壓縮處理

--exclude=PATTERN 指定排除不需要傳輸的文件模式

--include=PATTERN 指定不排除而需要傳輸的文件模式

--exclude-from=FILE 排除FILE中指定模式的文件

--include-from=FILE 不排除FILE指定模式匹配的文件

--version 打印版本信息

--address 綁定到特定的地址

--config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件

--port=PORT 指定其他的rsync服務端口

--blocking-io 對遠程shell使用阻塞IO

--stats 給出某些文件的傳輸狀態

--progress 在傳輸時現實傳輸過程

--log-format=formAT 指定日誌文件格式

--password-file=FILE 從FILE中得到密碼

--bwlimit=KBPS 限制I/O帶寬,KBytes per second

-h, --help 顯示幫助信息

 

附錄二:Rsync使用時的常見問題

錯誤1: rsync: read error: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]

解決:很大可能是服務器端沒有開啓 rsync 服務。開啓服務。或者開啓了防火牆指定的端口無法訪問。

 

錯誤2:@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]

解決:服務器端同步目錄沒有權限,cwrsync默認用戶是Svcwrsync。爲同步目錄添加用戶Svcwrsync權限。

 

錯誤3:@ERROR: failed to open lock file

rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]

解決:服務器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解決。

 

錯誤4:@ERROR: invalid uid nobody

rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2]

解決:在rsyncd.conf文件中添加下面兩行即可解決問題

UID = 0

GID = 0

 

錯誤5:@ERROR: auth failed on module test2

rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2]

解決:服務端沒有指定正確的secrets file,請在 [test2]配置段添加如下配置行:

auth users = coldstar #同步使用的帳號

secrets file = rsyncd.secrets #密碼文件

 

錯誤6:password file must not be other-accessible

解決:客戶端的pass文件要求權限爲600, chmod 600 /etc/rsync.pass 即可。

 

錯誤7rsync: chdir /cygdrive/c/work failed

: No such file or directory (2)

解決:服務器端同步文件夾路徑或名稱寫錯了,檢查path。

 

錯誤8:password file must be owned by root when running as root

解決:

將:rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/rsync.password [email protected]::SVN

修改成:

rsync.exe -avzP --progress --delete --password-file=/cygdrive/c/rsync.password<p.txt [email protected]::SVN

注意:p.txt裏的內容必須跟“rsync.password”文件裏的內容一樣。“rsync.password”這個文件是客戶端的密碼文件。

      並且p.txt文件要和rsync.exe文件在同一個目錄下。

 

===============================================================

rsyncserver 服務啓動時報錯“rsyncserver服務啓動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如“性能日誌和警報”服務。”

 

解決方法:將安裝目錄下的rsyncd.pid文件刪除,再重新啓動RsyncServer服務。一般是異常關機導致的。

 

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