在Windows中配置Rsync同步


Rsync是一款不錯的文件免費同步軟件,可以鏡像保存整個目錄樹和文件系統,同時保持原來文件的權限、時間、軟硬鏈接。第一次同步時 rsync 會復制全部內容,下次只傳輸修改過的文件部分。傳輸數據過程中可以實行壓縮及解壓縮操作,減少帶寬流量。支持scp、ssh及直接socket方式連接,支持匿名傳輸。支持Linux,Window平台。寫本文的時候,window版最新版為4.0.5版

官網:http://rsync.samba.org/

Linux版下載:http://rsync.samba.org/download.html

Windows版下載:https://www.itefix.no/i2/cwrsync-get 選(Free Edition 免費版)

客戶端:cwRsync 4.0.5 Installer

服務端:cwRsyncServer 4.0.5 Installer

 

一、安裝配置 Rsync 服務端

Window版服務端:

1. 點擊服務端安裝程序進行安裝,安裝過程中提示輸入服務端程序以服務運行時的用戶名,密碼。可以自定義,也可以用默認的用戶名密碼設置。

2. 安裝完成之后,進入程序安裝目錄根目錄,打開配置文件(如:C:\Program Files\ICW\rsyncd.conf ),進入配置。

use chroot = false
strict modes = false
lock file = rsyncd.lock 
hosts allow = 192.168.1.21
max connections = 5
port = 28950
pid = 0
uid = 0
log file = /cygdrive/f/RsyncLog/rsyncd.log # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygdrive/c/work [data_backup] path = /cygdrive/f/dataBackup auth users = dbbackuper secrets file = /cygdrive/e/Setting/Rsync/rsync_db.ps read only = no list = no transfer logging = yes

以上Windows目錄的寫法,應該按照POSIX風格來寫,默認配置文件的寫法cygwin貌似不工作,而要寫成cygdrive,如D:/data,要寫成/cygdrive/d/data。

以上配置只允許192.168.1.21訪問,這里按需修改。

strict modes = false 不驗證用戶密碼,

pid = 0,uid = 0指定匿名訪問。

auth users : 指訪問data_backup的用戶名

secrets file : data_backup用戶名對應的密碼文件。

 

3. 新建密碼文件:E:\Setting\Rsync\rsync_db.ps 。如:

root:root

admin:12345

密碼文件格式:用戶名:密碼,一行一個,有的系統不支持長密碼,另個密碼文件的權限對其它用戶組是不可讀的,設置錯了可能不工作。在Windows下,密碼文件的訪問權限一定要設置正確,不然用戶驗證的時候通不過。應將密碼文件E:\Setting\Rsync\rsync_db.ps的權限加入Rsycn服務運行服務的用戶名 cwRsyncServer 的讀取權限 及 設置其為該文件為所有者。

 

4. 在服務管理器中,找到服務 RsyncServer 服務,並啟動服務。

5. 如果開啟了防火牆,則防火牆規則中要添加Tcp端口 28950 允許通信。

6. 服務驗證,打開dos命令框,輸入telnet 192.168.1.20 28950 (如果沒有安裝telnet服務端與客戶端,請在控制面板->添加刪除程序->打開關閉windows功能中找到Telnet客戶端和服務端,勾選進行安裝)。如果telnet能成功連接,出現@RSYNCD: 30.0 等類似文字,則說明服務啟動正常。

 

二、安裝配置 Rsync 客戶端

1. 安裝Rsync客戶端程序,直至安裝完成。

2. 測試服務器Rsync的連通性。在Rsync客戶端所在計算機telnet Rsync服務端所在計算的相應地址和端口 

telnet 192.168.1.20 28950

出現@RSYNCD: 30.0 等類似文字,則說明客戶端連接服務端正常。

 

3. 打開Dos命令窗口,進到Rsync客戶端安裝目錄的bin目錄下,如:C:\Program Files\cwRsync\bin\。輸入以下命令,開始進行同步:

cd C:\Program Files\cwRsync\bin\
rsync --port=28950 -vzrtopg --progress --delete 192.168.1.20::data_backup /cygwin/f/dataBackup --password-file=/cygdrive/e/Setting/Rsync/rsync_db.ps 

 

參數說明:

--port=28950 # 端口
-vzrtopg --progress # 顯示同步過程詳細信息
--delete # 從客戶端目錄中刪除與服務端目錄中不同的數據,保證兩邊數據完全一致
/cygwin/f/dataBackup # Window下目錄F:\dataBackup
data_backup # 服務端配置文件rsyncd.conf文件中定義的模塊名稱
192.168.1.20 # Rsync服務端IP地址

設置該命令文件的用戶需要添加密碼文件的讀取權限及加其為文件所有者。如下:

 

 4. 添加系統計划定期執行

 新建命令執行文件C:\Program Files\cwRsync\bin\SyncDB_NoAuth.cmd。將以下命令保存到該文件中:

rsync --port=28950 -vzrtopg --progress --delete 192.168.1.20::data_backup /cygwin/f/dataBackup --password-file=/cygdrive/e/Setting/Rsync/rsync_db.ps 

 

在Window中添加任務計划,不同的系統,操作有點不一樣。

windows xp/Server 2003 : 開始->設置->控制面板->任務計划->打開添加任務計划->下一步

windows 7/Server 2008 : 開始-> 控制面板 -> 管理工具 -> 任務計划

 

 

 

 

三、配置項解析

 

 

四、安裝配置中常見問題

 

錯誤1: rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receive r=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]
解決:配置文件 rsync.conf中添加 lock file = rsyncd.lock 即可解決。

 

錯誤4: rsync: could not open password file "/cygwin/e/Setting/Rsync/rsync_db.pwd": No such file or directory (2)

解決:密碼文件的目錄一定要存在,而且要用POSIX風格的寫法:/cygdrive/e/Setting/Rsync/rsync_db.pwd

 

錯誤5:@ERROR: auth failed on module data_backup rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

解決:密碼錯誤,輸入正確的密碼即可。用戶名和密碼如果都正確,可能是遠程rsync服務器的帳戶密碼文件的權限必須為600。

 

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

解決:這是因為rsyncd.pwd rsyncd.sec的權限不對,應該設置為600。如:chmod 600 rsyncd.pwd, Windows下應將密碼文件的所有者改成程序運行的用戶。

 

錯誤7:@ERROR: invalid uid nobody . rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
解決:在rsyncd.conf文件中添加下面兩行即可
uid = 0
gid = 0 

 

問題8: @ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:服務器端的目錄不存在或無權限。創建目錄並修正權限可解決問題。

 

問題9:@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:服務器不存在指定模塊。提供正確的模塊名或在服務器端修改成你要的模塊以解決問題。

 

問題10:rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
原因:對方沒開機、防火牆阻擋、通過的網絡上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcp udp的873或者指定的rsync端口打開。

 

問題11:rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
原因:/etc/rsyncd.conf配置文件內容有錯誤。請正確核對配置文件。

 

問題12:rsync: chown "" failed: Invalid argument (22)
原因:權限無法復制。去掉同步權限的參數即可。(這種情況多見於Linux向Windows的時候)

 

問題13:@ERROR: daemon security issue -- contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
原因:同步的目錄里面有軟連接文件,需要服務器端的/etc/rsyncd.conf打開use chroot = yes。掠過軟連接文件。



問題14: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 服務,開啟服務。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM