使用 Synology 的 Hyper Backup 备份数据到 OneDrive

最近上了一个Microsoft Office 365的车,拥有1T的OneDrive云盘空间,正好用来备份群晖内的部分重要数据。其实之前一直是通过 Cloud Sync 同步群晖内 TimeMachine 和 iMazing 的备份数据,不过 Cloud SyncHyper Backup 还是有区别的,Cloud Sync 更多的是做文件同步,Hyper Backup才是真正备份的工具。

然而准备开始使用的时候才发现,Hyper Backup 不能提供将 OneDrive 用作备份目标: QQ202001051239432x.png

Google Drive 虽可用但是无限空间的账号不知道什么时候会翻车,最终还是放弃选择Google Drive。

最后在群晖的论坛发现有网友实现了将 OneDrive作为备份目标的方法: Backup to Microsoft OneDrive with Synology’s Hyper Backup

原理其实很简单,虽然 Hyper Backup 不支持备份到 OneDrive 但是却支持 WebDav,而我们可以通过 WebDAV 访问 OneDrive。不过 OneDrive WebDAV API 需要使用 Passport服务器端包含(SSI)版本1.4协议进行身份验证,而 Hyper Backup 的 WebDAV 客户端仅支持 HTTP基本身份验证NTLM身份验证

不过最终该网友提出了一种解决方案,通过设置代理服务器,将所有与身份验证有关的信息从基本身份验证转换为Passport身份验证(反之亦然),并将所有其他信息不变地转发:basic-to-passport-auth-http-proxy

设置代理服务器:

  1. 通过群晖内 Docker 实现代理服务器的安装: 运行群晖内的Docker套件,找到映像 - 新增 - 从URL添加 - 填入https://hub.docker.com/r/skleeschulte/basic-to-passport-auth-http-proxy并点击新增按钮

QQ202001051258542x.png

  1. 启动代理服务器镜像: 下载好镜像后,启动该镜像,选择高级设置:
  • 勾选启用自动重新启动,防止容器异常终止后无法运行
  • 端口默认是3000,可自行更改
  • 环境选项卡新增变量PROXY_TARGET为:https://d.docs.live.net/ 点击应用下一步可看到该容器的相关配置信息:

QQ202001051306392x.png

再次点击应用完成容器的创建,这时候 OneDrive 的代理服务器就设置完成了。

获取OneDrive CID

要通过WebDAV连接到OneDrive,除了用户名和密码外,还需要一个名为CID的字符串。可以通过以下方式获取:

打开 https://www.onedrive.com/ 并登录到 OneDrive。浏览器完成 OneDrive 界面的加载后,地址栏应显示类似https://onedrive.live.com/?id=root&cid=ABCDEFG123456789的内容。在这里,ABCDEFG123456789就是自己的CID了。CID不区分大小写。

设置 Hyper Backup 的备份目标

这时候我们再去 Hyper Backup 新建数据备份任务,选择WebDAV,填入对应的参数:

QQ202001051318452x.png

  • 服务器地址:127.0.0.1:port/CID port为创建容器时候设置的端口,默认为3000 CID为上文获取到的CID
  • 用户账户:OneDrive账户
  • 密码:OneDrive密码

填入正确以后,点击文件夹下拉列表,应该展示在 OneDrive 中所有文件夹列表。

接下来就是 Hyper Backup 的一系列配置了。

参考地址:

Comments