Rsync是一款不錯的文件免費同步軟件,能夠鏡像保存整個目錄樹和文件系統,同時保持原來文件的權限、時間、軟硬連接。第一次同步時 rsync 會複製所有內容,下次只傳輸修改過的文件部分。傳輸數據過程當中能夠實行壓縮及解壓縮操做,減小帶寬流量。支持scp、ssh及直接socket方式鏈接,支持匿名傳輸。支持Linux,Window平臺。寫本文的時候,window版最新版爲4.0.5版php
官網:http://rsync.samba.org/html
Linux版下載:http://rsync.samba.org/download.htmlwindows
Windows版下載:https://www.itefix.no/i2/cwrsync-get 選(Free Edition 免費版)服務器
客戶端:cwRsync 4.0.5 Installer網絡
服務端:cwRsyncServer 4.0.5 Installerssh
1、安裝配置 Rsync 服務端socket
Window版服務端:tcp
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 等相似文字,則說明服務啓動正常。
2、安裝配置 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 : 開始-> 控制面板 -> 管理工具 -> 任務計劃
3、配置項解析
4、安裝配置中常見問題
錯誤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 服務,開啓服務。