time machine 备份到 nas 失败若由 smb 协议冲突引起,核心是 macos 对 smb3 及 opportunistic locking、smb2 租用、smb 耐久控制有硬性要求,需 nas 端启用 smb3 并配置三项锁机制,mac 端用 hdiutil 创建 .sparsebundle 容器,修正 servermarkers.plist 主机名,并确保共享文件夹权限与设置合规。
time machine 备份到 nas 失败,若明确由 smb 协议冲突引起(常见报错如 error 45、error 80 或“磁盘不支持 time machine 备份”),核心问题不是网络连不上,而是 macos 对 smb 的协议版本、锁机制和元数据交互有硬性要求——低版本 smb 或缺失关键选项会直接被拒绝。解决重点在 nas 端配置与 mac 端容器创建方式的双重校准。
确认并强制启用 SMB3 及三项关键锁机制
NAS 后台必须满足 macOS 的底层通信规范,仅“开启 SMB”远远不够:
- 进入 NAS 控制面板 → 文件服务 → SMB → 高级设置,将最大 SMB 协议设为 SMB3(不能只勾选 SMB2)
- 务必启用以下三项:Opportunistic Locking、SMB2 租用、SMB 耐久控制(启用后会禁用跨协议文件锁定,但这是 Time Machine 必需的)
- 在 Bonjour 设置中,同时开启服务发现和通过 SMB 播送 Time Machine,确保 Mac 能自动识别并信任该共享
不用磁盘工具,改用 hdiutil 创建 .sparsebundle 容器
图形界面“磁盘工具”创建的 .sparseimage 文件,在 SMB 上几乎必然触发 error 45——它缺乏 Time Machine 所需的捆绑结构、分块存储和扩展属性支持:
- 先在 Finder 中用
smb://nas-ip/backup手动挂载共享,确认可写 - 打开终端,运行命令(按需替换容量和路径):
hdiutil create -size 2t -type SPARSEBUNDLE -fs "APFS" -volname "MacBackup" "/Volumes/backup/MacBackup.sparsebundle" - 创建完成后,执行:
sudo tmutil setdestination "/Volumes/backup/MacBackup.sparsebundle"
检查并修复系统级主机名校验(尤其升级后出现 error 80)
macOS 26.x 等新版系统更新后,可能因 serverMarkers.plist 缺失 NAS 主机名导致校验失败:
- 终端中执行:
sudo nano /System/Library/CoreServices/backupd.bundle/Contents/Resources/serverMarkers.plist - 在
<array></array>标签下添加一行:<string>your-nas.local</string>(替换成你 NAS 实际的本地域名) - 保存退出,重启备份服务:
sudo launchctl stop com.apple.backupd,等待几秒自动恢复
排除权限与共享配置干扰
即使协议和容器都正确,NAS 端细节能让整个流程功亏一篑:
- 为 Time Machine 专用共享文件夹关闭回收站(否则硬链接操作会被拦截)
- 在共享文件夹权限中,确保你的用户或 Everyone 具备写入 + 修改 ACL权限(不只是“读写”)
- 不要复用已有数据盘;新建一个空共享文件夹专用于 Time Machine
- Mac 端连接时,先在访达中“推出”旧挂载,再用
smb://重新手动连接,避免缓存旧配置











