最近搬进新家,配置好了局域网环境并使用海康 h99 作为存储中心共享资源给各个设备使用。它支持 smb 和 afp 协议共享文件,通常情况下 smb 就足够了。

之前我的 MacBook 是通过 usb 直接连接外部硬盘来进行 Time Machine 的,需要将硬盘格式化为 macOS 扩展格式。既然有了网络存储中心,那么为什么不将 Time Machine 也放在网络驱动器上呢?

研究了下果然有解决方案的,基本原理就是通过在网络驱动器上创建一个 macOS 格式的虚拟磁盘,然后再 MacBook 上挂载这个虚拟磁盘就可以正常进行备份及还原了。

创建虚拟磁盘

打开 MacBook 的 disk 应用,菜单选择:文件 - 新建镜像 - 空白镜像:
2021-04-30T00:36:06.png

设置镜像合适大小,也就是虚拟磁盘的空间,我这里配置 1TB,注意磁盘格式为 macOS 扩展,镜像格式为稀疏磁盘镜像:
2021-04-30T00:38:02.png

点击 存储 就生成了磁盘镜像文件了,默认会自动挂载这个镜像,我们手动将其推出。

也可以通过命令行的方式直接生成镜像文件:

hdiutil create -size 1024g -type SPARSEBUNDLE -fs "HFS+J" TimeMachine.sparsebundle

这里不需要担心 MacBook 上没有 1TB 这么大的空间,因为空白镜像只有 400MB 左右。

配置 Time Machine

镜像生成好后,我们需要将其移动到网络驱动器中,可以通过 finder 通过 smb 的方式连接网络驱动器,然后移动 TimeMachine.sparsebundle 文件到合适的目录。

然后我们在 finder 中双击网络驱动器中的 TimeMachine.sparsebundle 会自动 mount 虚拟镜像。此时在 finder 中我们就可以看到挂载的 TimeMachine 磁盘了。

然后我们就可以设置 TimeMachine 绑定到这个磁盘:

sudo tmutil setdestination /Volumes/TimeMachine

注意磁盘路径需要根据你自己实际定义的虚拟磁盘名称来处理。

此时我们打开 TimeMachine 就可以看到已经绑定到我们的网络驱动器上的虚拟磁盘了:
2021-04-30T00:49:26.png

我测试了下它的传输速度在千兆内网下能达到 50MB/s 左右,不是太快但基本能用。

备份与还原

备份的时候和直接连接 usb 没有什么区别,注意在重启系统后需要手动挂载下虚拟磁盘才可以正常备份。

我实际测试过开机 cmd + R 进入恢复模式后,在 TimeMachine 中能够正常识别到虚拟磁盘并进行系统还原。所以所有 TimeMachine 的功能都可以正常进行。

自动挂载

如果需要实现系统启动后自动挂载网络驱动器上的虚拟镜像,可以通过 apple script 的方式实现,脚本如下:

try
    mount volume "smb://xxx.xxx.xxx.xxx/"
end try

do shell script "hdiutil attach -mountpoint /Volumes/TimeMachine/ /Volumes/网络驱动器名/PATH/TO/TimeMachine.sparsebundle"

脚本另存为 application 格式并 system preference 中加入开机自启动项即可。

参考链接

添加Mac的Time Machine备份到smb网络硬盘(windows 共享文件夹)
自建Mac TimeMachine局域网无线备份环境
How to restore system from network drive

标签: none

添加新评论