使用 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 的方式的服务端。
服务端
下载
相关文件 我已经放到百度云,共享。先下载文件:
- 链接: https://pan.baidu.com/s/1LZQPu3J2TDwLLZgmWVyAjQ
- 提取码: uvxi
安装
创建 Windows 用户
安装 Server 程序
配置
- 打开目录
C:\Program Files(x86)\ICW
- 找到 rsyncd.conf 修改如下
1
2
3
4
5
6
7
8
9
10
11
12
13use 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的备份目录前面都要加/cygdriveauth users = ruicky
: rsync的虚拟用户,上面创建的用户secrets file = etc/rsync.password
: rsync的密码文件路径hosts allow = *
: 所有主机均可访问
注意: path
路径修改为自己要同步的文件夹地址。
- 在
C:\Program Files(x86)\ICW\etc
目录下创建rsync.password
文件,内容为:ruicky:A123456a
。(说明:该文件存放的认证信息。格式为 用户名:密码) - 在 Windows 的用户管理中,将刚创建的用户
ruicky
, 设置为管理员角色 - 在 你将要共享的文件夹中,右键,安全选项卡中,将刚创建的用户
ruicky
增加权限,并修改为“全部控制”。
运行
- 在 windows 的
控制面版
找到管理工具
,打开后,找到并打开服务
。这一步有困难的可参考Windows Server如何打开本地服务(services) - 修改“启动类型”为 “自动”后, 启动服务。
- 检查端口 。打开 Windows 的命令行窗户,输入:
netstat -ano | findstr 873
- [可选] 如果是云服务器,需要在你的云端控制台,将 873 端口放行。
客户端
下载
可以使用 brew 安装依赖包brew install rsync
配置
在你认为适合的位置创建 rsync.password
文件来保存服务端的密码,内容为 Aa123456a
(如果上方你修改,这边记得同步修改).
运行
打开命令行,运行
1 | 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
windows auth failed on module movie from unknown missing secret for user
报错原因:服务端的密码文件 etc/rsync.password
权限不对,600改为了644
- 错误二
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