设为首页 收藏本站
查看: 2055|回复: 0

[经验分享] windows下同步方案-cwRsync

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-24 09:04:55 | 显示全部楼层 |阅读模式
1. cwRsync简介

cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件。

cwRsync主要用于Windows上的远程文件同步备份和同步,它包含Cygwin DLL和适用Cygwin版本的Rsync两部分。

cwRsync分为ServerClient,本文使用的版本为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

[test]
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
[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

2.3 启动服务

在Server机器上运行services.msc,选择服务"RsyncServer"配置启动类型为"自动",后启动该服务。

3. Client安装使用3.1 安装

与Server相同,一路点击Next,使用默认配置安装即可。

3.2 使用

新建一个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 [url=]rsync://192.168.85.236:873/test[/url] /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
[url=]rsync://192.168.85.236:873/test[/url] 配置Sever的IP地址及需要同步的模块名(Server rsyncd.conf中配置)
19
/cygdrive/d/test 存放同步文件的Client本地目录D:\test

运行bat,Client会进行文件远程同步,截图如下:


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 off
set RSYNC_HOME=D:\Program Files\ICWclient\cwRsync\bin
set 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 --prog
ress --delete --exclude=web.config --port=873 mogo@127.0.0.1::test /cygdrive/
e/testhahaha < D:\Documents\Desktop\mogo.txt
#mogo.txt密码内容:mogo


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-80069-1-1.html 上篇帖子: Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘 下篇帖子: telnet无法连接另一台server的正常的开放端口 windows
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表