本来想记录一下我个人遇到这个问题的起因经过,以及我是如何找到解决办法的。但是懒了,不值得为苹果费那么多笔墨,毕竟苹果最近引入的系统级 bug 从来没修过。 本文中的 TM / Time Machine,在苹果的中文界面中称为「时间机器」,是系统内置的备份功能。

我需要往下读吗?

如果你满足以下任一条件,则无需阅读本文:

  • 使用的是 Intel 芯片的 Macbook(不论 Pro 或是 Air)
  • Time Machine 设置的是备份到远端网络位置(包括时间机器胶囊)
  • 不是在首次备份时遇到的问题

简单地说,如果你满足如下条件,则很可能会遇到这个问题,且符合的条件越多遇到的概率越大:

  • 是进行首次备份
  • 使用的是 M1 / M1 Pro / M1 Max 芯片的苹果电脑(不论 Pro 或是 Air 或是 iMac)
  • 操作系统是 macOS Monterey 或 BigSur
  • 是备份到外置磁盘(移动硬盘)
  • 为了运行第三方软件的内核扩展(kext)而在恢复模式下降低了系统安全性

这个问题的具体现象是:

在 TM 进行首次备份时,文件可以复制完成(可在系统偏好设置 > 时间机器中观察备份的进度条来验证),但在 Finder 中查看备份磁盘是空的。如果将时间机器显示在菜单栏上,则点开菜单栏,首行会显示「等待完成第一次备份」,如果使用的是英文界面,首行显示为“Waiting to complete first backup”。这行文本不会消失,直到时间机器触发下一次定时备份。

即使TM的定时备份被触发了多次,其菜单栏图标仍然会显示「等待完成第一次备份」。假设触发了N次备份,首次备份进度条上显示的是需要备份M GB内容,而你在这个过程中没有修改过电脑上的大文件,则你的备份磁盘共会被占用N*M GB的空间,且此时首次备份仍然不能完成。

排查

要定位到具体错误原因,在 TM 备份失败后,使用如下命令过滤出备份日志(可通过 iTerm 或自带的终端(Terminal)app 运行,大约需要1~2分钟):

1
log show --style syslog --predicate 'senderImagePath contains[cd] "TimeMachine"' --info > tmlog.txt

运行完成后,打开生成的 tmlog.txt 文件,在其中搜索BACKUP_DELAYED_UNFINISHED_PROTECTED_FILES,如果能找到结果,则你触发的是同一个问题。这一行的完整日志是:

2021-11-18 23:02:38.785136+0800  localhost backupd[247]: (TimeMachine) [com.apple.TimeMachine:General] Backup failed (104: BACKUP_DELAYED_UNFINISHED_PROTECTED_FILES)

从这一行更早的时间点查看,可以找到如下信息:

2021-11-18 23:02:38.512915+0800  localhost backupd[247]: (TimeMachine) [com.apple.TimeMachine:BackUpLaterCache] Records for BULRecordType
(246103) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsPeople/Data/Documents
(243362) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetPeople/Data/tmp
(243524) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetItems/Data/tmp
(246088) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsPeople/Data/Library
(245954) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsItems/Data/Library
(243495) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetItems/Data/Documents
(243480) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetItems/Data/Library
(245969) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsItems/Data/Documents
(246562) Users/xxx/Library/Metadata
(246132) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsPeople/Data/tmp
(243316) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetPeople/Data/Library
(243331) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetPeople/Data/Documents
(245998) Users/xxx/Library/Containers/com.apple.findmy.FindMyWidgetIntentsItems/Data/tmp
2021-11-18 23:02:38.513281+0800  localhost backupd[247]: (TimeMachine) [com.apple.TimeMachine:General] Failed postflight for destination <APFSDestination /Volumes/TimeMachine>

如果你看到类似的结果,则遇到的是同一个问题。

如何解决

将备份磁盘上被占用的空间清理掉(使用磁盘工具将对应的分区重新抹掉为APFS格式),然后将电脑关机,以安全模式启动,在安全模式下进行首次备份即可。此问题仅影响首次备份。首次备份完成后,接下来每次备份都不会受到影响。

这并未解决我的问题

请参阅如下链接(注意:随时间流逝,论坛帖子可能会越来越多,阅读需要非常有耐心):