Rsync是一个有名的Linux端同步工具,最大的特点是参数非常详细,可以实现多种多样的传输要求,该工具本身是一个Linux平台软件,在Windows端对应的是cwRsync,使用方法和原来的Rsync类似。由于cwRsync只是用Cygwin将rsync移植到Windows平台的,所以可以用于linux到Windows、Windows到Linux、Windows到Windows等等。
环境准备
软件包下载:
链接:https://pan.baidu.com/s/1lCqCtOkloShA2GB6cSDK1w
提取码:6GJd
两台电脑,我这里用虚拟机WIN10模拟服务端,用虚拟机windows7模拟客户端。
服务端IP:192.168.31.171
客户端IP:192.168.31.254
实现目的:将服务端C:\tongbu目录中的文件定时同步到客户端C:\target目录中去。
cwRsyncServer(服务端)配置步骤
1.双击运行wRsyncServer_4.1.0_Installer.exe。
2.这里创建的账户是操作系统的,创建的这个账户是专门用来运行cwRsyncServer服务端程序的。建议这里不要使用安装程序默认提供的账户名和密码,不易记忆,应该创建一个自己常用的、容易记住的账户。
用户:erlangwu
密码:123.com
安装完成后,打开用户管理,可以发现自动创建了安装时指定的erlangwu用户。
3.cwRsyncServer服务程序安装成功后,关闭窗口。然后在系统服务管理界面中找到RsyncServer项,将其启动类型改为“自动”,接着启动服务。
- 这一步的操作很重要,需要强调。服务端C:\tongbu目录中的文件需要cwRsyncServer服务程序来维持同步,而上面系统创建的“erlangwu”账户是来运行cwRsyncServer服务程序的,所以“erlangwu”账户需要对C:\tongbu这个目录有足够的操作权限。下面我们来设置一下。
首先
- 权限设置完后,修改cwRsyncServer的配置文件rsyncd.conf(安装目录C:\Program Files (x86)\ICW)。下图是我应用的配置项,未用到配置项的说明可以到官网查询。
use chroot = false #不适用chroot
strict modes = false #静态模式
hosts allow = * #对所有IP开放访问
log file = rsyncd.log #指定日志文件
max connections = 5 #指定最大连接数
uid = 0 #不指定uid,不加该选项无法使用任何账户
gid = 0 #不指定gid
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#权限模块
[test] #模块名称
path = /cygdrive/c/tongbu ##指定需要备份的目录
read only = false #客户端是否只读,具体含义参考官方文档
transfer logging = yes #记录传输日志
auth users = sanlangwu #服务端与客户端对接/同步文件时所需的身份验证,即用户名
secrets file = /cygdrive/c/rsync.password #服务端与客户端对接/同步文件时身份验证所需的密码文件 格式为“用户名:密码”
注意:
auth users不是指定刚开始安装时指定的用户,刚开始安装时指定的erlangwu用户的作用是用作启动 rsync,而rsyncd.conf中指定的用户的作用是用作客户端和服务端连接用的身份验证。
- 按照配置文件中的指定,需要在rsyncd.conf文件所在的目录下创建密码文件——rsync.password。内容为“用户名:密码”,即“sanlangwu:123.com”。至此服务端的同步配置已经完成了。
需要注意的是在windows中创建文件时需要开启后缀名,防止创建时实际创建的文件名为rsync.password.txt,这样就无法识别咯,一定要注意~~~
cwRsync客户端的配置步骤:
-
在客户端的机器上解压cwRsync_4.1.0_kh.zip后,点击cwRsync_4.1.0_Installer.exe。
-
测试客户端与服务端的连接是否正常。开始->运行->cmd,在命令行中输入如下内容:
其中873是cwRsyncServer默认的端口号,我们也可以在服务端的配置文件进行其他端口的指定使用。
出现如下界面则表示可以正常连通:
如果不连通,则可以从服务端防火墙端排查,关闭防火墙或者开放873端口。
-
在客户端创建执行脚本文件,其中写入连接服务端进行同步的命令。在安装目录C:\Program Files\cwRsync\bin目录下新建fileRsync.cmd文件,内容如下。
cd C:\Program Files (x86)\cwRsync\bin rsync --port=873 -vzrtopg --progress --password-file=/cygdrive/c/pass/rsync.password sanlangwu@192.168.31.171::test /cygdrive/c/target
sanlangwu:就是对应在服务端配置文件中指定的身份验证的用户名。
test:就是在服务端配置文件中指定的模块名称。
/cygdrive/c/target:指定将服务端文件同步到客户端的目录。
--password-file指明客户端的身份验证密码文件,跟服务端的那个密码文件是对应的。
这里注意,我在设置的过程中发现密码文件路径中不能有空格,不然会造成命令解析错误的。所以我单独把密码文件放到了c:\pass目录下。
4.创建客户端密码文件c/pass/rsync.password
客户端的密码文件中不需要写认证用户名。只需要填写sanlangwu的密码即可
123.com
5.在命令行中运行脚本文件fileRsync.cmd,同时观察客户端的同步文件结果目录,发现服务端的文件已经同步到这里,则说明cwRsync配置及应用成功。
报错处理
1.服务端缺少lock file配置报错
解决方法:
更改服务端配置文件过程中误删除lock file配置导致的报错,在服务端配置文件中添加:
lock file = rsyncd.lock后重启RsyncServer进程即可
2.客户端同步时报错 客户端密码文件权限问题
解决方法:
cd C:\Program Files\cwRsync\bin
chmod.exe -c 600 /cygdrive/c/pass/rsync.password
chown.exe administrator /cygdrive/c/pass/rsync.password
如果客户端没有chown.exe可以去服务端中拷贝,文章中所给的资源包中也有,拷贝到bin目录执行即可。
参考链接
如遇到其他问题可以参考哦~~
https://www.jb51.net/article/71728.htm
https://my.oschina.net/angerbaby/blog/224148