外观
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 已用空间大得多。
- 局域网发现正常,见 局域网发现。
设置步骤
- 建用户:在
用户 → 用户(Users → Users)创建tm-alice这样的专用用户,Shell 选/usr/sbin/nologin即可(SMB 不需要 shell),设好密码,见 用户与用户组。 - 建共享文件夹:创建
tm-alice,权限选 770,见 共享文件夹。 - 启用 SMB:如果还没启用,按 SMB 基础 启用。
- 添加 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。留空表示不限制。
- 共享文件夹选
- 授权:在共享文件夹的 权限 里只给
tm-alice设「读/写」,别人就连不上,见 设置共享文件夹权限。 - 保存,点击顶部黄色提示条上的 应用(Apply)。
- 在 Mac 上:
- 在 Finder 里选 前往 → 连接服务器(⌘K),输入
smb://<NAS 地址>,用tm-alice登录,勾选 在我的钥匙串中记住此密码。 - 打开系统设置里的 时间机器,添加备份磁盘,选这个共享。较新的 macOS 里它在 通用 下面,旧版系统里是系统偏好设置里的单独图标。
- 系统会问是否加密备份,建议加密,并把密码保管好。
- 在 Finder 里选 前往 → 连接服务器(⌘K),输入
菜单名称随 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 共享,改 最大磁盘空间,保存并应用。
检查结果
Mac 的时间机器里能选到这个共享,并完成第一次备份。第一次备份很慢,有线网络更稳。
在 OMV 的 shell(SSH 或本机控制台,root 身份)里看共享文件夹,应该有一个 Mac 名字加
.sparsebundle的目录:shls -la <共享文件夹的绝对路径>诊断 → 服务 → SMB/CIFS(Diagnostics → Services → SMB/CIFS)备份期间能看到这台 Mac 的连接。时间机器里显示的容量接近你设的上限。
定期从备份里还原一个文件,确认备份真能用,见 恢复演练。
备份与维护
- 放在 NAS 上的时间机器备份,依然只有这一份。NAS 的硬盘坏了,这些备份也没了。重要的备份要再有一份独立副本,见 备份策略:冗余不是备份。
- 给 Mac 备份占用的空间做规划,也可以用磁盘配额限制整体用量,见 磁盘配额。注意配额不改变报告给 Mac 的容量。
常见问题
Mac 选不到这个共享。 确认共享启用了 支持时间胶囊 Time Machine 并已应用;先在 Finder 里用 smb://<NAS 地址> 连上;检查 Bonjour 是否正常,见 局域网发现。
备份中途报错或提示备份磁盘不可用。 先检查 NAS 的空间、网络是否稳定、Mac 保存的登录凭据是否还对。仍然不行,到 Apple 支持文档里查时间机器的对应报错,不要直接删除 sparsebundle,否则等于删掉所有备份。
Btrfs 上容量上限不生效。 见上文,升级到 8.5.10 或更新。
几台 Mac 要共用一个共享。 不建议。上限是按共享报告的,每台 Mac 建一个共享最清楚。
想把上限调大。 编辑 SMB 共享改 最大磁盘空间,保存并应用。
参考资料
- Apple 支持:为 Time Machine 设置备份磁盘
- Samba 手册:vfs_fruit
- OMV 议题:#1555 Time Machine 容量上限、#2284 Btrfs 上的容量上限不生效、#2263 macOS 兼容性选项
- OMV 源码:SMB 共享表单、
shares.j2、Avahi 的smb.sls(_adisk服务宣告)