使用 rsync 同步 Windows 跟 Mac 之间数据

0

使用 rsync 同步 Windows 跟 Mac 之间数据

背景

年初趁活动买了腾讯云的服务器,装的是 Windows Server 系统,平时没事跑跑脚本啥的。前两天整了个 QT 下载,就下一些比较费时间的资源,放到云端下载节省时间跟资源。下载完以后,就需要把资源从云端同步到本地。以此为背景,有了本文的折腾。

环境:

  • 服务端:Windows Server 2008 R2
  • 客户端:MacOS 10.15.6
  • 服务端rsync版本:cwRsyncServer_4.1.0_Installer.exe

术语说明:
rsync 是一个常用的 Linux 应用程序,用于文件同步,最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分。
cwRsyncServer 是 Windows 下实现 rsync 的方式的服务端。

服务端

下载

相关文件 我已经放到百度云,共享。先下载文件:

安装

创建 Windows 用户

安装 Server 程序

双击安装

选择我同意

使用默认路径

创建用户

关闭

配置

  1. 打开目录 C:\Program Files(x86)\ICW
    在文件夹下打开
  2. 找到 rsyncd.conf 修改如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use chroot = false
    strict modes = false
    uid = 0
    gid = 0
    log file = rsyncd.log
    [movie]
    path = /cygdrive/d/data/movie/
    ignore errors
    read only = false
    transfer logging = yes
    auth users = ruicky
    secrets file = etc/rsync.password
    hosts allow = *

重要参数说明

  • uid = 0: 0代表不限定用户
  • path = /cygdrive/d/data/movie/: 和linux不同的是windows的备份目录前面都要加/cygdrive
  • auth users = ruicky: rsync的虚拟用户,上面创建的用户
  • secrets file = etc/rsync.password: rsync的密码文件路径
  • hosts allow = *: 所有主机均可访问

注意: path路径修改为自己要同步的文件夹地址。

  1. C:\Program Files(x86)\ICW\etc 目录下创建 rsync.password 文件,内容为:ruicky:A123456a。(说明:该文件存放的认证信息。格式为 用户名:密码)
  2. 在 Windows 的用户管理中,将刚创建的用户 ruicky, 设置为管理员角色
  3. 在 你将要共享的文件夹中,右键,安全选项卡中,将刚创建的用户 ruicky 增加权限,并修改为“全部控制”。

运行

  1. 在 windows 的 控制面版 找到 管理工具,打开后,找到并打开 服务。这一步有困难的可参考Windows Server如何打开本地服务(services)
  2. 修改“启动类型”为 “自动”后, 启动服务。
    服务启动
  3. 检查端口 。打开 Windows 的命令行窗户,输入:netstat -ano | findstr 873
    端口
  4. [可选] 如果是云服务器,需要在你的云端控制台,将 873 端口放行。

客户端

下载

可以使用 brew 安装依赖包brew install rsync

配置

在你认为适合的位置创建 rsync.password文件来保存服务端的密码,内容为 Aa123456a(如果上方你修改,这边记得同步修改).

运行

打开命令行,运行

1
2
rsync -avztPr --password-file=/Users/ruicky/Downloads/rsync.password ruicky@11.22.33.44::movie /Users/ruicky/Downloads/movie
`

参数说明:

  • rsync 命令
    • -a:归档模式,表示递归传输并保持文件属性
    • -v:显示rsync过程中详细信息
    • -z:传输时进行压缩提高效率
    • -t:保持mtime属性
    • -P:显示文件传输的进度信息
    • -r:递归到目录中去
    • --password-file:daemon模式时的密码文件,可以从中读取密码实现非交互式
  • 格式
    rsync 用户名@你服务器IP地址::配置文件中的同步节点 本地同步路径

常见错误

  1. 错误一
    1
    windows auth failed on module movie from unknown missing secret for user

报错原因:服务端的密码文件 etc/rsync.password权限不对,600改为了644

  1. 错误二
    1
    password file must not be other-accessible continuing without password file

报错原因:服务端的密码文件 etc/rsync.password 路径是否正确

参考

rsync实现windows和windows之间的数据同步
rsync常见问题及解决办法
rsync 用法教程
配置Windows server 用户和组权限实验详解
rsync(一):基本命令和用法
How to update Rsync on Mac OS Mojave and High Sierra

-------------------本文结束 感谢您的阅读-------------------
坚持原创技术分享,您的支持将鼓励我继续创作!