最近搬进新家,配置好了局域网环境并使用海康 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
现在可以建立 APFS 格式的镜像:-fs 'APFS'

这里不需要担心 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 中能够正常识别到虚拟磁盘并进行系统还原。经过查询在 10.13.4 之后版本进入 recovery 可以直接选择连接到网络驱动器上,理论上可以在 UI 界面上直接选择连接到对应驱动器上,我之前测试中也是可以在 TimeMachine 列表中看到网络备份的。但是最近升级到 macos 14 后的一次系统故障需要恢复备份的时候发现,不能再 recovery 中找到网络备份,看来还是有一定限制的,此时需要手动在 terminal 中挂载上我们的备份镜像。

有几个前提条件:

  • recovery 的版本必须高于 timemachine 备份系统版本
  • 必须先 mount 镜像文件所在的根路径,然后 hdid 镜像文件,否则会看不到备份信息

挂载流程:

  • 开机按 cmd + R 进入 recovery
  • 点击顶部 Utilities 打开 terminal
  • 执行 cd /Volumes
  • 新建文件夹 mkdir TimeMachine
  • 进入文件夹 cd TimeMachine
  • 挂载备份镜像所在的网络驱动器目录 mount -t smbfs smb://username:password@ServerIPAddress/path/to/imagehomefolder /Volumes/TimeMachine 注意必须直接挂载到备份镜像文件所在目录
  • 挂载备份镜像 hdid /Volumes/TimeMachine/NameOfYourSparseBundle.sparsebundle
  • 退出 terminal exit
  • 进入 Restore From Time Machine Backup,此时应该就可以看到挂载好的 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

标签:无

你的评论