网络通讯

关注公众号 jb51net

关闭
软件教程 > 网络通讯 >

Windows下cwRsync搭建步骤(文件同步教程图文详解)

脚本之家

CwRsync是基于cygwin平台的rsync软件包,支持windows对windows、windows对Linux、Linux对windows高效文件同步,由于CwRsync已经集成了cygwin类库,因此安装的时候可以省去cygwin包,Cwrsync还集成了OpenSSH for windows,可以实现Linux 下Rsync一模一样的操作

详细配置步骤如下:

一、服务器端安装配置

1、下载服务端安装文件 https://www.jb51.net/softs/55933.html

服务端是安装在“需要被同步的数据所在的服务器”

2、安装服务端

默认一直下一步;到下图所示

这一步很重要,可以说是cwRsync安装成功与否的关键。这一步会在当前系统下生成 SvcCWRSYNC一个账户,用来启动RsyncServer服务。建议这个对此账户的密码进行重新设置,从新设置密码后,需要在服务中更改,否则 RsyncServer服务不能启动

程序自动设置程序目录可修改的权限,因为需要写日志文件。

配置文件默认在程序的安装目录下,默认是  C:\Program Files\ICW

3、修改配置文件rsyncd.conf

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes

或者

use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
# 0代表不限定用户
uid = 0
gid = 0
# 本软件所用到的路径,如果是windows系统的文件路径都是以/cygdrive为前缀
[test]
path = /cygdrive/e/sync
read only = false
transfer logging = yes
# rsync的虚拟用户,此用户不是上面安装过程中输入的用户,是客户端连接的用户
auth users = test_rsync
# rsync的密码文件路径,以安装目录为相对路径
secrets file = rsync.password

修改配置内容如下,参数解释: 

use chroot = false # 不使用chroot 
strict modes = false #使用静态模式

pid file = rsyncd.pid # 日志记录文件

log file = rsyncd.log # 日志记录文件 

[test] # 这里是认证的模块名,在client端需要指定 
path = /cygdrive/e/bak # 需要做镜像的目录,如e/bak(此目录需要给 SvcCWRSYNC 账户的读取权限)
transfer logging = yes # 记录传输日志
read only = yes # 只读
list = no # 不允许列文件
hosts allow = 192.168.0.0/255.255.252.0 

hosts deny = * # 禁止除192.168.1.0/255.255.255.0段外的连接IP
uid = 0 #解决运行后的@ERROR: invalid uid 错误
gid = 0 #解决运行后的@ERROR: invalid gid错误 

lock file = rsyncd.lock #解决文件被锁定无法复制问题

#auth users = SvcCWRSYNC # 认证的用户名,这里没有这行,则表明是匿名 #secrets file = /cygdrive/c/pass/rsync.passwd # 认证文件名
创建认证文件 c/pass/rsync.passwd 内容格式:用户:密码,如SvcCWRSYNC:star888 启动RsyncServer服务并保证开机自动重启,服务器端配置完毕。 

在安装目录下创建rsync.password,此文件是客户端连接时所使用的账号和密码列表,创建完毕后按下面步骤验证权限

确保用户Administrator对rsync.password有访问权限,如果没有则赋予读取权限,权限没问题就填写

就输入test_rsync:123456   冒号左边是用户名,右边是密码,注意注意注意:客户端同样也有这个文件但不需要左边,后面会提到这问题

上述准备好,就可以到服务中启动  RsyncServer服务

最后检查RsyncServer的所使用的873端口是否启动,如果冲突则在rsync.conf上更改端口,如果开启了防火墙需要加入例外。

二、客户端安装配置

1、下载客户端安装文件https://www.jb51.net/softs/55934.html

2、安装 

一直下一步,安装完成。

安装文件:cwRsync_4.1.0_Installer.exe和chown.exe

安装结束后的目录结构,把chown.exe拷贝到bin目录下

在bin目录下创建client.password(不一定放在bin目录,这里只是为了方便),内容只要对应服务端中rsync.password中的密码123456

在运行同步之前需要为client.password密码文件授权,否则客户端程序无法访问,授权的方式可以界面操作(参照服务端),也可以在bin目录下运行

chmod.exe -c 600 /cygdrive/${path}/client.password
chown.exe administrator/cygdrive/${path}/client.password

600指读取权限

${path}指密码文件的本地路径,如/cygdrive/c/client.password  指c盘下面的client.password

chown.exe的改变文件属主的命令,当前我是以administrator运行客户端的命令,所以这里是为administrator授权

至此就可以运行客户端命令,注意:客户端执行的时候要在客户端的bin目录下,还有一种方式可以配环境变量:

rsync.exe -avz --password-file=client.password test_rsync@192.168.1.12::test /cygdrive/f/testwin_rsyncdi

命令中的test_rsync是对应服务端中的rsync.password文件的用户

::test是对应服务端中rsync.conf中的test配置

最后在系统路径上f/testwin_rsyncdi看到同步过来的数据文件,如果希望在凌晨时间跑这个同步,可以在windows的任务计划上设置。

3、cwRsync客户端不需要很复杂的配置,需要设置环境变量path:c:\Program Files\cwRsync\bin

4、通过命令建一个批处理

@echo off #没有密码
set RSYNC_HOME=c:\Program Files\cwRsync\bin
cd %RSYNC_HOME%
d:
rsync -av rsync://192.168.2.242/test /cygdrive/e/test 

@echo off  #需要密码
set RSYNC_HOME=c:\Program Files\cwRsync\bin
cd %RSYNC_HOME%
d:
rsync -avzP --progress --delete --password-file=/cygdrive/c/pass/rsync.passwd SvcCWRSYNC@192.168.2.242::test /cygdrive/e/test

意思是将192.168.2.242的服务端下的test模块下的e:\bak目录同步到客户端的e:\test下

@echo off
title wwwjb51 数据同步
cd /d D:\cwRsync\bin\
rsync -vzrtopg --progress --no-super --password-file=jb51.secrets /cygdrive/d/webroot/wwwjb51net/ jb51@ip::wwwjb51

命令参数解释:

-avzP  
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v verbose,详细模式输出
-u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器时钟的同步

--progress显示备份过程

--delete 删除那些DST中SRC没有的文件
--password-file 指定密码文件,只需包含密码而不用包含用户名

SvcCWRSYNC@192.168.2.242::test
SvcCWRSYNC 登陆服务器端的用户名  
192.168.2.242 服务器端的ip地址
test 服务器端指定的认证模块名,多个同步作业靠此模块名区分  

/cygdrive/e/test 存放服务器端同步文件的本地目录
4、配置系统作业,运行脚本选择rsync.bat,客户端配置完毕。