跳转到内容

macOS 时间机器备份 ​

OMV 可以做 Mac 时间机器(Time Machine)的备份目标。做完这一篇,你会有一个专用的 SMB 共享,带容量上限,Mac 的时间机器能发现并选用它。

工作原理 ​

  • 时间机器通过 SMB 备份到 NAS。Apple 的说明是:如果可以选择 SMB 或 AFP,用 SMB。
  • OMV 在 SMB 共享上打开 Samba 的 vfs_fruit 对 Time Machine 的支持,并通过 Avahi(Bonjour)把这个共享宣告成「时间机器目的地」,所以 Mac 能自动发现它。
  • Mac 会在共享里创建一个 sparsebundle 磁盘映像来存放备份。

开始之前 ​

  • OMV 8.0.1 起,SMB 共享才有 最大磁盘空间 这个容量上限选项。建议用最新的 8.x:Btrfs 上限不生效的问题,更新记录把修复列在 8.5.10。
  • 每台 Mac 一个专用共享文件夹和一个专用用户。原因有两个:
    • Samba 手册说,设置了容量上限的卷不能存放其他内容,否则其他内容不被计入上限。
    • 上限是按共享对外报告的。几台 Mac 共用一个共享时,彼此会挤占空间。
  • 给备份留够空间,要比 Mac 已用空间大得多。
  • 局域网发现正常,见 局域网发现。

设置步骤 ​

  1. 建用户:在 用户 → 用户(Users → Users)创建 tm-alice 这样的专用用户,Shell 选 /usr/sbin/nologin 即可(SMB 不需要 shell),设好密码,见 用户与用户组。
  2. 建共享文件夹:创建 tm-alice,权限选 770,见 共享文件夹。
  3. 启用 SMB:如果还没启用,按 SMB 基础 启用。
  4. 添加 SMB 共享:服务 → SMB/CIFS → 共享(Services → SMB/CIFS → Shares)→ 创建(Create):
    • 共享文件夹选 tm-alice。
    • 公开选「否」。
    • 勾选 支持时间胶囊 Time Machine(Time Machine support)。macOS 兼容性(macOS compatibility)会自动跟着勾上;反过来,取消 macOS 兼容性会同时取消 Time Machine。
    • 出现的 最大磁盘空间(Maximum disk size)填容量上限,格式是数字加可选单位 K、M、G、T、P,例如 500G。留空表示不限制。
  5. 授权:在共享文件夹的 权限 里只给 tm-alice 设「读/写」,别人就连不上,见 设置共享文件夹权限。
  6. 保存,点击顶部黄色提示条上的 应用(Apply)。
  7. 在 Mac 上:
    1. 在 Finder 里选 前往 → 连接服务器(⌘K),输入 smb://<NAS 地址>,用 tm-alice 登录,勾选 在我的钥匙串中记住此密码。
    2. 打开系统设置里的 时间机器,添加备份磁盘,选这个共享。较新的 macOS 里它在 通用 下面,旧版系统里是系统偏好设置里的单独图标。
    3. 系统会问是否加密备份,建议加密,并把密码保管好。

菜单名称随 macOS 版本有差别,以你系统的显示为准。Apple 的说明里提到,如果服务器通过 Bonjour 宣告,不连接也能设置;否则要先用 SMB 连上,再选已挂载的网络磁盘。先连上再设置最稳。

只要有一个共享启用了 Time Machine 或 macOS 兼容性,OMV 就会让所有启用的 SMB 共享都加载 Apple 兼容的模块(catia、fruit、streams_xattr)。这是预期行为,OMV 维护者在议题 #2263 里明确说过不是 bug。

容量上限怎么起作用 ​

最大磁盘空间 对应 Samba 的 fruit:time machine max size:

  • 它限制的是向 Mac 报告的磁盘容量,防止时间机器用满整个真实磁盘。
  • Samba 手册说明这是一个近似计算,只统计 Time Machine 的 sparsebundle 映像里的内容。所以这个共享里不能放别的东西。
  • 它不是配额。文件系统配额也代替不了它:按 OMV 的 Issue #1555 里的说明,普通配额下每个共享仍然向备份客户端报告整个磁盘空间。
  • 在 Btrfs 上,OMV 会给共享设置 Samba 的 dfree 命令来修正容量显示,它会盖过上限,导致上限不生效(Issue #2284)。更新记录把修复列在 8.5.10:设置了上限的 Time Machine 共享,不再设置 dfree 命令。不过议题的关闭日期比该条更新记录的日期晚,保险起见,遇到 Btrfs 上限不生效,先把 OMV 更新到最新版本。

要改上限:编辑这个 SMB 共享,改 最大磁盘空间,保存并应用。

检查结果 ​

  1. Mac 的时间机器里能选到这个共享,并完成第一次备份。第一次备份很慢,有线网络更稳。

  2. 在 OMV 的 shell(SSH 或本机控制台,root 身份)里看共享文件夹,应该有一个 Mac 名字加 .sparsebundle 的目录:

    sh
    ls -la <共享文件夹的绝对路径>
  3. 诊断 → 服务 → SMB/CIFS(Diagnostics → Services → SMB/CIFS)备份期间能看到这台 Mac 的连接。

  4. 时间机器里显示的容量接近你设的上限。

  5. 定期从备份里还原一个文件,确认备份真能用,见 恢复演练。

备份与维护 ​

  • 放在 NAS 上的时间机器备份,依然只有这一份。NAS 的硬盘坏了,这些备份也没了。重要的备份要再有一份独立副本,见 备份策略:冗余不是备份。
  • 给 Mac 备份占用的空间做规划,也可以用磁盘配额限制整体用量,见 磁盘配额。注意配额不改变报告给 Mac 的容量。

常见问题 ​

Mac 选不到这个共享。 确认共享启用了 支持时间胶囊 Time Machine 并已应用;先在 Finder 里用 smb://<NAS 地址> 连上;检查 Bonjour 是否正常,见 局域网发现。

备份中途报错或提示备份磁盘不可用。 先检查 NAS 的空间、网络是否稳定、Mac 保存的登录凭据是否还对。仍然不行,到 Apple 支持文档里查时间机器的对应报错,不要直接删除 sparsebundle,否则等于删掉所有备份。

Btrfs 上容量上限不生效。 见上文,升级到 8.5.10 或更新。

几台 Mac 要共用一个共享。 不建议。上限是按共享报告的,每台 Mac 建一个共享最清楚。

想把上限调大。 编辑 SMB 共享改 最大磁盘空间,保存并应用。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。