美文网首页rsync后端砖头Linux
windows服务器使用cwRsync实时同步

windows服务器使用cwRsync实时同步

作者: 二郎5 | 来源:发表于2022-01-07 11:05 被阅读0次

    Rsync是一个有名的Linux端同步工具,最大的特点是参数非常详细,可以实现多种多样的传输要求,该工具本身是一个Linux平台软件,在Windows端对应的是cwRsync,使用方法和原来的Rsync类似。由于cwRsync只是用Cygwin将rsync移植到Windows平台的,所以可以用于linux到Windows、Windows到Linux、Windows到Windows等等。

    rsync同步
    环境准备

    软件包下载:
    链接: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


    创建启动cwrsync的用户

    安装完成后,打开用户管理,可以发现自动创建了安装时指定的erlangwu用户。


    自动创建rsync用户

    3.cwRsyncServer服务程序安装成功后,关闭窗口。然后在系统服务管理界面中找到RsyncServer项,将其启动类型改为“自动”,接着启动服务。


    启动RsyncServer服务
    1. 这一步的操作很重要,需要强调。服务端C:\tongbu目录中的文件需要cwRsyncServer服务程序来维持同步,而上面系统创建的“erlangwu”账户是来运行cwRsyncServer服务程序的,所以“erlangwu”账户需要对C:\tongbu这个目录有足够的操作权限。下面我们来设置一下。

    首先


    设置要同步的目录的权限 点击添加 image.png 勾选所有权限
    1. 权限设置完后,修改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中指定的用户的作用是用作客户端和服务端连接用的身份验证。
    
    1. 按照配置文件中的指定,需要在rsyncd.conf文件所在的目录下创建密码文件——rsync.password。内容为“用户名:密码”,即“sanlangwu:123.com”。至此服务端的同步配置已经完成了。

    需要注意的是在windows中创建文件时需要开启后缀名,防止创建时实际创建的文件名为rsync.password.txt,这样就无法识别咯,一定要注意~~~


    rsync.password文件
    cwRsync客户端的配置步骤:
    1. 在客户端的机器上解压cwRsync_4.1.0_kh.zip后,点击cwRsync_4.1.0_Installer.exe。


      安装rsync客户端
    2. 测试客户端与服务端的连接是否正常。开始->运行->cmd,在命令行中输入如下内容:


      测试与服务端rsync是否连通

    其中873是cwRsyncServer默认的端口号,我们也可以在服务端的配置文件进行其他端口的指定使用。
    出现如下界面则表示可以正常连通:
    如果不连通,则可以从服务端防火墙端排查,关闭防火墙或者开放873端口。

    正常连通
    1. 在客户端创建执行脚本文件,其中写入连接服务端进行同步的命令。在安装目录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进程即可


    lock file报错

    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

    相关文章

      网友评论

        本文标题:windows服务器使用cwRsync实时同步

        本文链接:https://www.haomeiwen.com/subject/vhercrtx.html