cwRsync是Rsync在Windows上的實現版本,Rsync經過使用特定算法的文件傳輸技術,能夠在網絡上傳輸只修改了的文件。html
cwRsync主要用於Windows上的遠程文件同步備份和同步,它包含Cygwin DLL和適用Cygwin版本的Rsync兩部分。算法
cwRsync分爲Server和Client,本文使用的版本爲4.1.0,下載地址以下:windows
cwRsyncServer v4.1.0:http://pan.baidu.com/s/1eQpaIVw服務器
cwRsync v4.1.0:http://pan.baidu.com/s/1pJ3B1FX網絡
下面舉例介紹Server及Client端的配置使用,本文使用環境以下:ide
Server: 127.0.0.1post
Client: 127.0.0.1ui
一路點擊Next,使用默認配置安裝便可。spa
修改配置文件rsyncd.conf以下(默認位置:C:\Program Files\ICW\):日誌
1 use chroot = false 2 strict modes = false 3 hosts allow = * 4 log file = rsyncd.log 5 pid file = rsyncd.pid 6 port = 873 7 uid = 0 8 gid = 0 9 10 # Module definitions 11 # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work 12 # 13 [test] 14 path = /cygdrive/d/test 15 read only = false 16 transfer logging = yes
部分重要參數解釋以下:
1 use chroot = false 2 strict modes = false 3 hosts allow = * #容許全部IP訪問 4 log file = rsyncd.log #日誌文件 5 pid file = rsyncd.pid #進程文件 6 port = 873 #服務端口號 7 uid = 0 #不限定用戶 8 gid = 0 #不限定組 9 10 # Module definitions 11 # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work 12 # 13 [test] #認證的模塊名,在client端須要指定使用 14 path = /cygdrive/d/test #須要作鏡像同步的目錄,如d:/test 15 read only = false 16 transfer logging = yes
注:
1. uid=0和gid=0 須要指定,不然後面client進行同步時會報錯:
@ERROR: invalid uid nobody rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.8]
2. 上述只是簡單的配置示例,還有不少其餘的選項,能夠參考幫助文件:C:\Program Files\ICW\doc\rsyncd.conf.html
在Server機器上運行services.msc,選擇服務"RsyncServer"配置啓動類型爲"自動",後啓動該服務。
與Server相同,一路點擊Next,使用默認配置安裝便可。
新建一個test.bat文件,內容以下:
@echo off set RSYNC_HOME=C:\Program Files\cwRsync\bin cd %RSYNC_HOME% rsync -avzrP --progress --delete rsync://127.0.0.1:873/test /cygdrive/e/test
命令參數詳解:
-avzP -a 參數,至關於-rlptgoD: -r 是遞歸 -l 是連接文件,意思是拷貝連接文件 -p 表示保持文件原有權限 -t 保持文件原有時間 -g 保持文件原有用戶組 -o 保持文件原有屬主 -D 至關於塊設備文件 -v 詳細模式輸出 -z 傳輸時壓縮 -P 顯示傳輸進度 --progress 顯示備份同步過程 --delete 刪除Client中有Server沒有的文件,即若是Server刪除了這一文件,那麼client也相應把文件刪除,保持真正的一致 rsync://127.0.0.1:873/test 配置Sever的IP地址及須要同步的模塊名(Server rsyncd.conf中配置) /cygdrive/e/test 存放同步文件的Client本地目錄e:\test
運行test.bat,Client會進行文件遠程同步,截圖以下:
服務器在乎外重啓後,RsyncServer服務不能啓動,提示「本地計算機上的reyncserver服務啓動後又中止了」,方法是將安裝目錄下的rsyncd.pid文件刪除或更名便可,再從新啓動RsyncServer服務,OK,成功了,rsyncd.pid文件會自動從新生成。
需求場景:當前但願將一臺server上面的一個文件夾同步到5個client上面去,可是又不但願同步全部文件,由個別文件是不須要同步的,因此必須在server的配置文件中添加排除同步的文件,這就須要用到了exclude這個參數。這個能夠在client上面使用,也能夠直接在server上面的進行配置。下面的例子是在server的rsyncd.conf文件上面配置的。
案例:config文件目錄下有test一、test2和test3這三個目錄,這三個目錄當中都有一個test.txt文件。下面經過不一樣的配置信息來實現不一樣的同步要求。
ENVISION——config——test1——test.txt
||———test2——test.txt
||———test3——test.txt
[config] path = /cygdrive/d/ENVISION/config #exclude from = rsync.exclude exclude = test1/ read only = false transfer logging = yes lock file = rsyncd.lock
[config] path = /cygdrive/d/ENVISION/config exclude from = rsync.exclude #exclude = test1/ read only = false transfer logging = yes lock file = rsyncd.lock
其中rsync.excluede文件跟rsyncd.conf在同一目錄下,其中的文件內容是,其中「/」很是重要。
test2/
test3/
exclude和exclude from不單單指限制與目錄,也可使指定的文件名。
在test1目錄下添加一個文件test2.txt,而後進行以下配置
[config] path = /cygdrive/d/ENVISION/config exclude from = rsync.exclude exclude = test1/test.txt read only = false transfer logging = yes lock file = rsyncd.lock
轉載: http://lovesoo.org/windows-remote-data-synchronization-tool-cwrsync.html