2014年08月14日 测试工具, 软件测试 共 2414字 字号 小 中 大 3条评论 阅读 4,639 次
cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件。
cwRsync主要用于Windows上的远程文件同步备份和同步,它包含Cygwin DLL和适用Cygwin版本的Rsync两部分。
cwRsync分为Server和Client,本文使用的版本为4.1.0,下载地址如下:
cwRsyncServer v4.1.0:http://pan.baidu.com/s/1eQpaIVw
cwRsync v4.1.0:http://pan.baidu.com/s/1pJ3B1FX
下面举例介绍Server及Client端的配置使用,本文使用环境如下:
Server: 192.168.85.236
Client: 192.168.85.249
一路点击Next,使用默认配置安装即可。
修改配置文件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文件,内容如下:
1 |
@echo off |
2 |
set RSYNC_HOME=C:\Program Files\cwRsync\bin |
3 |
cd %RSYNC_HOME% |
4 |
C: |
5 |
rsync -avzP --progress --delete rsync://192.168.85.236:873/test /cygdrive/d/test |
命令参数详解:
1 |
-avzP |
2 |
-a 参数,相当于-rlptgoD: |
3 |
-r 是递归 |
4 |
-l 是链接文件,意思是拷贝链接文件 |
5 |
-p 表示保持文件原有权限 |
6 |
-t 保持文件原有时间 |
7 |
-g 保持文件原有用户组 |
8 |
-o 保持文件原有属主 |
9 |
-D 相当于块设备文件 |
10 |
11 |
-v 详细模式输出 |
12 |
-z 传输时压缩 |
13 |
-P 显示传输进度 |
14 |
15 |
--progress 显示备份同步过程 |
16 |
--delete 删除Client中有Server没有的文件,即如果Server删除了这一文件,那么client也相应把文件删除,保持真正的一致 |
17 |
18 |
rsync://192.168.85.236:873/test 配置Sever的IP地址及需要同步的模块名(Server rsyncd.conf中配置) |
19 |
/cygdrive/d/test 存放同步文件的Client本地目录D:\test |
运行bat,Client会进行文件远程同步,截图如下:
在上述环境上,进行了大批量文件的同步测试,结果如下:
测试说明 |
开始时间 |
结束时间 |
耗时 |
新增2.7w文件 (大小27.5G) |
17:07:02 |
20:56:33 |
3:49:31 |
2.7w文件基础上,进行一次同步 (文件数0) |
9:12:10 |
9:17:46 |
0:05:36 |
2.7w文件基础上,进行一次同步 (文件数100 大小130M) |
9:27:33 |
9:33:25 |
0:05:52 |
每次进行同步时,client均会获取更新文件列表,文件数目比较大时(2.7w 27.5G)耗时较长(5min47s)
在此基础上进行增量更新耗时较短,更新100个文件(减去获取列表时间)只需耗时16s
1. 在client机器上选择:控制面板->任务计划->添加任务计划
2. 点击下一步->浏览,打开上述的test.bat文件
3. 选择每天执行一次
4. 配置起始时间
5. 点击下一步,输入服务器用户名及密码,完成任务添加
6. 选择刚才添加的任务,配置属性:日常安排->高级,选择重复任务,配置每20分钟执行一次,持续24小时
这时,计划任务就会每天24小时,每20分钟运行一次的方式来自动进行client与Server间的数据同步了。