在Windows中配置Rsync同步文件

Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限、时间、软硬链接。第一次同步时 rsync 会复制全部内容,下次只传输修改过的文件部分。传输数据过程中可以实行压缩及解压缩操作,减少带宽流量。支持scp、ssh及直接socket方式连接,支持匿名传输。支持Linux,Window平台。

官网: http://rsync.samba.org/.
Windows版下载:: https://www.itefix.no/i2/cwrsync-get.
在Windows中配置Rsync同步文件_第1张图片
现在官方开始了收费版本,建议从外站下载免费版本!
有两个,一个是服务端,一个是客户端。要下载全哦
放上链接:
客户端:cwRsync_2.1.5_Installer.zip.
服务端: cwRsync_Server_2.1.5_Installer.zip.
客户端: cwRsync_3.1.0_Installer.zip.
服务端: cwRsyncServer_3.1.0_Installer.zip.

一、安装配置 Rsync 服务端

1、点击服务端安装程序进行安装,安装过程中提示输入服务端程序以服务运行时的用户名,密码。可以自定义,也可以用默认的用户名密码设置。(这个东西好像也用不到。不过它会在你的计算机上添加一个用户。)
在Windows中配置Rsync同步文件_第2张图片
我创建的时候用户名就是我的ip,它就自动给我创建了一个用户。(好像也没用到。应该是可以删的。)

2、安装完成之后,进入程序安装目录根目录,打开配置文件(如:D:\Program Files(X86)\ICW\rsyncd.conf ),进入配置。
我的完整配置如下(应该是有很多配置是可以省略的,有兴趣的可以研究一下。):

use chroot = false
strict modes = false
#这里如果只允许某一个机器访问的话,可以填写IP地址
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
#允许的最大连接数
max connections = 10
lock file = rsyncd.lock
motd file = rsyncd.motd
#这两个参数,是指定匿名访问。
uid = 0
gid = 0
transfer logging = yes
read only = yes
list = no
port = 28950
#这个是密码文件
secrets file = accountPassword.conf
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#


[test]
#这个是需要同步的文件位置,Windows目录的写法,应该按照POSIX风格来写,
#默认配置文件的写法cygwin貌似不工作,而要写成cygdrive,如D:/data,要写成/cygdrive/d/data。
path = /cygdrive/d/picturesTestFile
#read only = true 表示客户端只能下载服务端的文件而不能上传(单向同步). 这应该是大部分业务的需求,如果有上传需要,设置read only = false 即可.
read only = false
transfer logging = yes
#也可以设置访问test的用户名,我因为是内网传输,就没有设置用户名密码,密码在上边的secrets file参数中自读取
# auth users = uploadFile

3、新建密码文件:D:\Program Files(X86)\ICW\accountPassword.conf
密码文件格式:用户名:密码(root:12345),一行一个
因为我没有使用账户名和密码。所以我就没有创建这个文件。但是根据网上所说的。因为运行这个服务的用户是上面1中所说的用户。所以要给该用户添加密码读取权限。
(1).右键你创建的密码文件。选择属性
(2).选择安全,然后选择你之前创建的用户。点击编辑
在Windows中配置Rsync同步文件_第3张图片
(3).给与想对应的权限,然后点击应用就ok了。

4、 在服务管理器中,找到服务 RsyncServer 服务,并启动服务。
默认是手动启动,可以设置一下开机自启。
在Windows中配置Rsync同步文件_第4张图片
5、如果开启了防火墙,则防火墙规则中要添加Tcp端口 28950 允许通信。
因为我得防火墙是关闭的,就不做演示了。

6、服务验证,打开dos命令框,输入telnet 192.168.1.109 28950 (如果没有安装telnet服务端与客户端,请在控制面板->添加删除程序->打开关闭windows功能中找到Telnet客户端和服务端,勾选进行安装)。如果telnet能成功连接,出现@RSYNCD: 30.0 等类似文字,则说明服务启动正常。
在Windows中配置Rsync同步文件_第5张图片

二、安装配置 Rsync 客户端

1、下载客户端安装程序,一直下一步就可以了。

2、在客户端测试服务端Rsync的连通性。在Rsync客户端所在计算机telnet Rsync服务端所在计算的相应地址和端口

telnet 192.168.1.109 28950

出现@RSYNCD: 30.0 等类似文字,则说明客户端连接服务端正常。
在Windows中配置Rsync同步文件_第6张图片
3、添加环境变量
在Windows中配置Rsync同步文件_第7张图片
这样可以不用每次执行命令,都进入到安装目录的bin目录下

4.在dos命令行界面,测试文件是否能同步,我是直接写脚本文件运行的。
打开文本编辑软件写入下面的命令:
这个事没有用户名和密码的版本

rsync --port=28950 -vzrtopg --progress --delete 192.168.1.109::test /cygdrive/e/图片保存目录/test

如果你设置的有用户名和密码的话。用下面的这个命令

rsync --port=28950 -vzrtopg --progress --delete 192.168.1.109::test /cygdrive/e/图片保存目录/test --password-file=/cygdrive/d/Program Files(X86)/ICW/accountPassword.conf

参数说明
–port=28950 ------- 端口
-vzrtopg --progress ------- 显示同步过程详细信息
–delete ------- 从客户端目录中删除与服务端目录中不同的数据,保证两边数据完全一致
/cygdrive/e/图片保存目录/test ------- Window下的备份目录(接收端)
test ------- 服务端配置文件rsyncd.conf文件中定义的模块名称
192.168.1.109 ------- Rsync服务端IP地址

保存的时候选择文件类型为脚本文件:
在Windows中配置Rsync同步文件_第8张图片

5、先运行一下脚本文件,看文件能不能正常同步。如果可以的话。就将脚本加入到windows定时中。
打开控制面板 -> 管理工具 -> 任务计划程序
点击创建任务
在Windows中配置Rsync同步文件_第9张图片

设置一下任务的名称,然后勾选 不管用户是否登录都要运行
在Windows中配置Rsync同步文件_第10张图片
然后点击触发器,选择新建。
就不打字了,按照截图上的步骤来吧。
在Windows中配置Rsync同步文件_第11张图片

最后点击操作,还是点击新建。
选择一下脚本的位置就可以了。
在Windows中配置Rsync同步文件_第12张图片
--------------------------------------补充----------------------------------------
现在已经不使用rsync来同步文件了。改为自己写上传了。但是在我部署上传的时候有一点小问题。我原来同步的那个文件夹的权限好像被改了。跟同级的其他目录的权限不一样了。导致我上传文件的时候。创建不了新的文件夹。但是我也不记得原来的权限是不是这样的了。去查了一下参数。
可以参考一下我的另一篇博客:rsync 参数说明.
其中提到了 客户端参数中又一个 -p 的参数说明是 保存权限的。 我明明添加这个参数了。可是感觉我的权限就是被改了。
在Windows中配置Rsync同步文件_第13张图片

反正有需要用rsync的小伙伴们稍微留意一下吧。我要去修改权限了。拜拜┏(^0^)┛

最后是在网上看到的一些在安装过程中的一些错误合集:

错误1: rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receive r=3.0.2]
解决:很大可能是服务器端没有开启 rsync 服务。开启服务。

错误2:@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。

错误3:@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2]
解决:配置文件 rsync.conf中添加 lock file = rsyncd.lock 即可解决。

错误4: rsync: could not open password file “/cygwin/e/Setting/Rsync/rsync_db.pwd”: No such file or directory (2)

解决:密码文件的目录一定要存在,而且要用POSIX风格的写法:/cygdrive/e/Setting/Rsync/rsync_db.pwd

错误5:@ERROR: auth failed on module data_backup rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

解决:密码错误,输入正确的密码即可。用户名和密码如果都正确,可能是远程rsync服务器的帐户密码文件的权限必须为600。

错误6: password file must not be other-accessible

解决:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd, Windows下应将密码文件的所有者改成程序运行的用户。

错误7:@ERROR: invalid uid nobody . rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
解决:在rsyncd.conf文件中添加下面两行即可
uid = 0
gid = 0

问题8: @ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:服务器端的目录不存在或无权限。创建目录并修正权限可解决问题。

问题9:@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。

问题10:rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
原因:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873或者指定的rsync端口打开。

问题11:rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
原因:/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。

问题12:rsync: chown “” failed: Invalid argument (22)
原因:权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)

问题13:@ERROR: daemon security issue – contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
原因:同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件。

问题14:rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2]
解决:很大可能是服务器端没有开启 rsync 服务,开启服务。

你可能感兴趣的:(文档整理,windows,https)