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