搭建 macOS 的远程备份机

Wenxuan SHI /
August 25, 2019
6 min read

macOS 有一个神奇的功能,叫做“时间机器”。当激活这个功能的时候,你可以将系统里的任意文件回滚到之前的任意状态。换句话说,macOS 存档了你每隔一段时间的系统的整个状态。使用这个功能通常需要定期插入硬盘。这篇文章里我通过配置一些网络协议实现了 macOS 局域网内的无感知备份。

以我写的这篇文章为例,打开时光机器后,你会看到这样的画面:

经过测试,macOS 会保存每一次手动保存后的文件版本。

但是要完整的开启时间机器,MacBook 自带的硬盘肯定是不够的。时间机器要求插入一块硬盘,或连接支持 AFP/SMB 的服务器以完成备份。连接到 SMB 服务器备份的功能是 10.15 版本新增的,目前不稳定(我个人不太喜欢这个协议)。今天的目标是,让相同内网里的一台服务器支持 AFP 协议,并且成为 macOS 的备份服务器。

OpenWRT 发挥余热

前几篇文章提到过,我在闲鱼收到了这个曾经是矿机的路由器,并且对它爱不释手。6 月刚到手的时候,我就想尝试用路由器搭建远程备份机。但是在测试了很多次以后,最终放弃了。

下面我简单介绍几种方案,和放弃它们的原因。

Netalk

用 Netalk 可以将 Linux 机器伪装成支持 AFP 的各种设备,包括 iMac、Airport 等等。路由器安装 Netalk 之后,32MB 的闪存减少了很多。且无论如何,我手上的 MacBook 就是不能识别它。最后放弃了直接伪装的方案。

SMB

通过搭建 SMB 服务器,也可以进行备份。但是 macOS 在 10.15 的诸多测试版中,只有短暂的一个版本成功识别了服务器。这个方案也许需要下个月 Catalina 正式版出现才可以实现。暂时放弃。

磁盘镜像

这是我开脑洞想出来的办法。在“磁盘工具”里,建立一个虚拟磁盘镜像,然后转移到 SMB 服务器的磁盘上。在 MacBook 上连接 SMB 服务器,再挂载该镜像。成功备份,但是速度慢到令人发指,还经常断开连接。最后放弃。

寻找宿主机

人脉关系很重要。借由撒娇和出卖皮相坚不可摧的塑料友谊,我拿到了学长放在智园的一台黑苹果里的 Ubuntu 虚拟机。Ubuntu 安装 Netalk 服务非常简单。在几分钟的设置后,Ubuntu 就成功伪装成了 Time Capsule。

AFP 功能需要开放端口 548。这时候问题来了:这台虚拟机的宿主机是 macOS 系统,macOS 默认占用了 548 端口。一开始准备通过分配虚拟网卡的方式直接解决,但是由于学长水平太差认为不可行,这个方案也失败了。在我一度准备放弃的时候,他提出了四个字——内 网 穿 透!

感慨生活不易。有钱多好,直接购买 AirPort 就完事了。就在贫穷的我们跋山涉水终于拨云见日之时,竟然发现九九八十一难还少了一难。也罢,转向另一个同学要了一个通过虚拟网卡而获得了独立 ip 的虚拟服务器作为跳板机。

配置 frp 内网穿透比较简单。照着下面这张图配置就可以了。

成功搭建

从拿到 Ubuntu 服务器到搭建完全套服务,竟然没有碰到什么阻碍。当备份开始的时候,心想:“这就结束了?”

结果确实是这样。这就结束了。

学校宿舍区的 AP 速度非常慢(宿舍区-->智园)。第一次备份花了整整 6 个小时。但是搭建完这个服务之后,只要 MacBook 连在学校内网里,就会每隔一小时自动备份。这些备份是无感的,每次花费若干秒。

搭建完这套服务实现了我积攒半年的心愿,写一篇博客记录一下。

© LICENSED UNDER CC BY-NC-SA 4.0

Loved this post? Consider following me.

I work on topics related to system security aside with many other interesting things. I would love to have friends who share the same interests.

Wish you happy