yw6866 发表于 2018-6-17 09:03:13

windows下同步方案-cwRsync

1. cwRsync简介
  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
2. Server安装使用
2.1 安装
  一路点击Next,使用默认配置安装即可。
2.2 配置
  修改配置文件rsyncd.conf如下(默认位置:C:\Program Files\ICW\):
# 一定要加上它, 否則會有 @ERROR Invalid UID nobody.  
uid = 0
  
gid = 0
  
# 如果用了, 會有以下 Error
  
# file has vanished: "/proc" (in backup)
  
# rsync: readdir("/cygdrive" (in backup)): Bad address (14)
  
use chroot = no
  
# secrets.txt 的權限為 other 時, 那會有以下 Error
  
# secrets file must not be other-accessible (see strict modes option)
  
strict modes = false
  
hosts allow = *
  
log file = rsyncd.log
  
pid file = rsyncd.pid
  
port = 873
  
# Module definitions
  
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
  

  
path = /cygdrive/d/test
  
read only = false
  
transfer logging = yes
  部分重要参数解释如下:
1    use chroot = no  
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    #认证的模块名,在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)
  2. 上述只是简单的配置示例,还有很多其他的选项,可以参考帮助文件:C:\Program Files\ICW\doc\rsyncd.conf.html
2.3 启动服务
  在Server机器上运行services.msc,选择服务"RsyncServer"配置启动类型为"自动",后启动该服务。
3. Client安装使用
3.1 安装
  与Server相同,一路点击Next,使用默认配置安装即可。
3.2 使用
  新建一个test.bat文件,内容如下:
@echo off  
set RSYNC_HOME=C:\Program Files\cwRsync\bin
  
cd %RSYNC_HOME%
  
rsync -avzP --progress --delete rsync://192.168.85.236:873/test /cygdrive/d/test
  命令参数详解:
-a 参数,相当于-rlptgoD:  
-avzP  
  
-r 是递归
  
-l 是链接文件,意思是拷贝链接文件
  
-p 表示保持文件原有权限
  
-t 保持文件原有时间
  
-g 保持文件原有用户组
  
-o 保持文件原有属主
  
-D 相当于块设备文件
  

  
-v 详细模式输出
  
-z 传输时压缩
  
-P 显示传输进度
  

  
--progress 显示备份同步过程
  
--delete 删除Client中有Server没有的文件,即如果Server删除了这一文件,那么client也相应把文件删除,保持真正的一致
  

  
rsync://192.168.85.236:873/test 配置Sever的IP地址及需要同步的模块名(Server rsyncd.conf中配置)/cygdrive/d/test 存放同步文件的Client本地目录D:\test
3.3 测试
  在上述环境上,进行了大批量文件的同步测试,结果如下:
  测试说明
  开始时间
  结束时间
  耗时
  新增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
4.计划任务配置
  1. 在client机器上选择:控制面板->任务计划->添加任务计划
  2. 点击下一步->浏览,打开上述的test.bat文件
  3. 选择每天执行一次
  4. 配置起始时间
  5. 点击下一步,输入服务器用户名及密码,完成任务添加
  6. 选择刚才添加的任务,配置属性:日常安排->高级,选择重复任务,配置每20分钟执行一次,持续24小时
  这时,计划任务就会每天24小时,每20分钟运行一次的方式来自动进行client与Server间的数据同步了。
  eg:
  服务器端需要同步的目录:E:/test   ,test 目录下有:dir1/test.txt 文件
1、排除服务器端(即不同步)dir1/test.txt 文件  
rsync -avzP --progress --delete --exclude="dir1/test.txt" rsync://192.168.1.22:873/test/cygdrive/e/rsync    #同步到: E:/rsync
  
# --delete 表示删除客户端有但服务器端不存在的文件/目录
  
# --exclude="dir1/test.txt"表示客户端不同步服务器端 E:/test/dir1/test.txt文件,也不会修改本地已经存在的E:/rsync/dir1/test.txt文件
  
# --exclude="test.txt"当exclude值为test.txt时,将不修改所有test.txt文件
  
# --exclude="dir1/"当exclude值为dir1时,将不修改dir1目录下的所有文件
  ————————————————————————
  bat脚本内容:
@echo offset RSYNC_HOME=D:\Program Files\ICWclient\cwRsync\binset RSYNC_PASSWORD=mogo"%RSYNC_HOME%\rsync" -avzP --progress --delete --exclude=web.config --port=873 mogo@127.0.0.1::test /cygdrive/e/test  
或者cmd下:
  
"D:\Program Files\ICWclient\cwRsync\bin\rsync" -avzP --progress --delete --exclude=web.config --port=873 mogo@127.0.0.1::test /cygdrive/e/testhahaha < D:\Documents\Desktop\mogo.txt
  
#mogo.txt密码内容:mogo
页: [1]
查看完整版本: windows下同步方案-cwRsync