iCloud Drive 在 Mac 上无法同步

我的Mac(10.13.3)上的iCloud Drive无法同步。
我的其他设备表现得很好,icloud.com也是如此。在一个设备上进行的任何更改都会立即传播到其他设备上。
在我的Mac上对iCloud Drive进行的更改没有任何效果。云图标一直显示着。更改不会传播到我的其他设备或iCloud.com,其他位置进行的更改也不会传播到我的Mac上,它仿佛迷失在某个孤立的宇宙中。
所有其他服务(例如联系人、日历等)都表现得很好。
到目前为止,我尝试过...
在所有设备上禁用/启用iCloud Drive。 禁用/启用“桌面和文稿文件夹”的各种组合。 在所有设备上退出/登录iCloud。 重启Mac,直到启动音让我背诵埃德加·爱伦·坡的《钟声》。 删除所有文件,并尝试使用一个小文件进行实验。 等待八个小时,让一个25kb的惊吓猫照片进行同步。
...但都没有成功。
我附上了与之匹配的日志条目。
message type:error
message type:fault
process:icloud

...下面,但如果有明显的错误,那就超出了我的能力范围。

我已经束手无策了。非常感谢任何建议。

iCloudPreferences   error   15:45:50.464165 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : ****###****-[MMMobileDocumentsService confirmUserWantsToDisableiCloudDriveAndDesktopWithDialogCompletion:] kMMPropertyMobileDocumentsiCloudDriveDisableDataclassActions  returned  (null)  uploadPending 1 downloadPending 1
iCloudPreferences   error   15:45:52.377211 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] :  -[MMMobileDocumentsService observeValueForKeyPath:ofObject:change:context:]: progressText got from iCloud Drive :()
iCloudPreferences   error   15:45:52.377322 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] :   ****###****     -[MMMobileDocumentsService observeValueForKeyPath:ofObject:change:context:]:                                                 0.0% [indeterminate]            (fractionCompleted)
iCloudPreferences   error   15:45:58.012621 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : [-[MMMobileDocumentsService setEnabled:creating:withWindow:]_block_invoke_2] : showUploadDisableiCloudDriveSheetWithCompletionHandler completed with status 1
iCloudPreferences   error   15:45:58.015098 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : [-[MMMobileDocumentsService uploadAndOptOutOfiCloudDriveWithCompletionHandler:]_block_invoke] : BRUploadAllFilesForLogOutOperation completed with error Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
iCloudPreferences   error   15:45:58.015652 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : [-[MMMobileDocumentsService handleOperationCompletion:]] : BRUploadAllFilesForLogOutOperation  or BRDownloadAllFilesForLogOutOperation completed with error Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
iCloudPreferences   error   15:45:58.016112 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : [-[MMMobileDocumentsService handleOperationCompletion:]] : BRUploadAllFilesForLogOutOperation  or BRDownloadAllFilesForLogOutOperation failed with error Error Domain=NSCocoaErrorDomain Code=3072 "The operation was cancelled."
iCloudPreferences   error   15:45:58.029026 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] : SetEnabledOnACAccount_block_invoke Dataclass Action sent to save account robertbryanharrison@mac.com  service com.apple.Dataclass.Ubiquity enableState 0 : {
    "com.apple.Dataclass.Ubiquity" = ACDataclassActionMergeLocalDataIntoSyncData;
}
iCloudPreferences   error   15:47:05.448533 -0800   com.apple.preferences.icloud.remoteservice  [AOSAccounts] :  [GetProperty]  kMMPropertyMobileDocumentsMigrationStatusKey status: <CFBasicHash 0x61000066b300 [0x7fff99f38980]>{type = mutable dict, count = 3,
entries =>
0 : status = SUCCEEDED
3 : id = <CFString 0x61000046d540 [0x7fff99f38980]>{contents = "edac53f1-93db-48ac-b9f3-2512550632a7"}
11 : name = <CFString 0x610000233440 [0x7fff99f38980]>{contents = "NOT_NEEDED"}
}

我在一台全新的2020款MacBook Pro上遇到了类似的问题。在重新格式化、登录和退出账户以及尝试以上建议后,我不得不升级到苹果支持团队寻求帮助。他们表示可能是一个供应问题,建议我等待过夜看看是否有变化。 - Nikesh
Nikesh,有帮助吗?在全新的2020款MacBook Pro上,我使用M1芯片从我的旧MacBook迁移数据,但我注意到iCloud不可用,并且没有任何文件同步。 - Anton Zorin
其他相关问题按照投票数量排序如下: https://apple.stackexchange.com/q/264915/63255, https://superuser.com/q/1045791/203848, https://apple.stackexchange.com/q/293051/63255。 最成功的解决方法似乎是执行killall bird命令,如果需要的话,首先删除${HOME}/Library/Application Support/CloudDocs/目录。 - Carl
6个回答

【2022年8月更新】 Intagli 报告,在 Big Sur 系统中,mv CloudDocs CloudDocsOld 命令会导致错误。

解决方法是使用 Finder 重命名文件夹。在 Finder 中找到正确的文件夹:

  • 键入 cmd-shift-G
  • 粘贴 ~/Library/Application Support 并按回车键

[原始回答] 我遇到了同样的问题。我尝试过重新启动、新建用户配置文件、登录和退出iCloud、勾选和取消云端文档等操作。

每次我都等待了几个小时,但我的iCloud文档仍然没有出现。

最后有效的方法是 Dwight McKay 的建议:

在Mac的终端程序(位于实用工具文件夹中),输入以下命令:

killall bird
cd ~/Library/Application\ Support
mv CloudDocs CloudDocsOld # SEE NOTE AT TOP

注意:原始指示要求删除CloudDocs(而不是mv)。建议编辑以移动而不是删除文件夹,但未经测试。如果您可以确认此方法仍然有效,请留下评论,我将删除此注释。

如果一切顺利,那么您可以在终端中之后删除CloudDocsOld文件夹:

cd ~/Library/Application\ Support
rm -rf CloudDocsOld

如果出现问题,您可以恢复“CloudDocsOld”文件夹。
cd ~/Library/Application\ Support
rm -rf CloudDocs
mv CloudDocsOld CloudDocs # SEE NOTE AT TOP

cd = 切换目录到...
rm = 删除
-rf = r递归 & f强制删除只读文件
mv = 移动并重命名 A 为 B(请参阅顶部的注意事项)


我不得不等大约一个小时才能看到文件名,当然实际的文件仍然存储在云端。
对我来说这太技术性了,但你可以将以下命令粘贴到终端中以查看同步进度。
brctl log -w

大约花了4个小时来处理300 GB的数据。当处理完成时,brctl停止输出。如果一切正常,您可以从`~/Library/Application\ Support`中删除CloudDocsOld文件夹。
您可以在Dwight的页面上找到更多信息:
- bird是同步iCloud文档的守护进程 - `~/Library/Application Support/CloudDocs`包含iCloud元数据存储

嗨,我有同样的问题。你能再多说几句关于我应该在终端中输入的代码吗?是不是killall bird,然后按下回车键,接着输入cd ~/Library/Application\ "space" Support,再按下回车键,最后输入rm -rf CloudDocs?我无法正确输入这段代码,所以我试图在Library/Application Support中找到CloudDocs,但是我也找不到。谢谢。 - Chris Kuo
1是的,请在每行后面输入回车。第二行也可以写成cd /Library/"Application Support"(\ 确保空格和 Support 包含在目录名中)。在 Finder 中可能会起作用:cmd-shift-g 然后“/Library/Application Support”,然后将 CloudDocs 拖到垃圾桶中。然后打开垃圾桶,按住 Control 键点击 CloudDocs 并立即删除。如果您根本找不到 CloudDocs,能告诉我您使用的 Mac OS 版本吗?(苹果菜单 › 关于本机)。 - Andy Swift
4关于@ChrisKuo的问题,这里可能需要提醒一下。rm -rf是一个强大的命令,可能会对您的计算机造成很大的伤害。请确保您知道自己在做什么。通常不建议从网站上复制粘贴命令。 - n1000
2在进行了全新的Catalina安装之后,我遇到了完全相同的问题。我不知道这种技术是否解决了我的问题,因为即使应用了它,我的文件仍然丢失,并在几个小时后随机出现。 - Can Sürmeli
1在安装和迁移Catalina之后,我遇到了同样的问题。控制台中出现了关于mdworker "System Policy: deny(1) on the Mail Library."的错误。我不得不从Library/Spotlight中删除iBooksAuthor.mdimporter,然后按照这个答案中描述的步骤进行操作。 - intagli
1杀掉所有的鸟对我来说已经足够了;-) 给你一瓶葡萄酒,伙计。 - Bartłomiej Semańczyk
是的,第一个命令就足够了。同步重新开始,有所不同。非常好的提示,谢谢@Andrew Swift! - MiB
1一个比rm -rf CloudDocs更安全的替代方法是将其重命名为mv CloudDocs CloudDocsOld,然后重新启动。一个新的CloudDocs文件夹会被创建,你可以在确认同步完成后删除旧的文件夹。 - Taylor D. Edmiston
在Big Sur 11.1 (20C69)上,当我尝试在终端中使用mv CloudDocs CloudDocsOld命令时,我遇到了"Operation not permitted"的错误(即使使用sudo)。然而,我刚刚使用Finder将"CloudDocs"重命名为"CloudDocsOld",这对我来说是有效的。目前,bird似乎正在处理这些文件。 - intagli
这在 Monterey 12.4 上对我仍然有效(杀死 bird 是不够的)。我在重命名 CloudDocs 后立即重新启动了。重启后发生的事情相当令人不安,但几个小时后问题自行解决。首先,iCloud 中的所有内容都带有云图标和向下箭头,与此同时,Finder 告诉我它需要上传大约9GB的数据,它以极慢的速度进行(第一个小时大约100MB)。但是我厌倦了等待,一个小时后,一切突然看起来几乎好了... - Harald Hanche-Olsen
意思是,尽管Finder似乎认为同步已经完成,但仍然有一些文件旁边有云图标。但是,甚至云图标也慢慢消失了。这个故事的寓意是:要有耐心,不要相信电脑告诉你的一切,不要惊慌。 - Harald Hanche-Olsen
请更新答案以回应@intagli在此处提到的问题(https://apple.stackexchange.com/questions/313716/icloud-drive-wont-sync-on-mac/322908#comment574584_322908)- 在Mac OS 11.x上,shell mv命令无法工作,但Finder重命名可以。 - Justin Maxwell
最终对我起作用的方法是:killall bird 并没有解决问题。然后我在Finder中将CloudDocs重命名为CloudDocs_Old,这也没有解决问题。接着我再次执行了 killall bird,最终它又开始正常工作了! - damd

经过几个月的处理,我终于找到了一个有意义的解决方法。在iOS设备上可以创建带有表情符号的文件名,但iCloud Drive在Mac上无法正确处理。如果iCloud Drive在iOS设备上同步正常,但在Mac上却不行,请尝试以下方法:
在iOS设备上,重命名或删除可疑的文件名,以去除表情符号和奇怪的Unicode字符。
在我的情况下,我选择了彻底清除它们,将它们从iPad复制到“我的iPad”进行备份,然后尝试删除它们。但问题是,它们仍然存在于“最近删除”中,而且Mac仍然无法接受。您需要导航到“位置->最近删除”,然后点击“选择”,再点击底部的“全部删除”。
之后,执行我们已经做过数十次的神圣仪式:
- 在“偏好设置->iCloud”中禁用iCloud Drive - 在终端中运行命令“killall bird; rm -rf ~/Library/Application\ Support/CloudDocs; rm -rf ~/Library/Caches/com.apple.bird” - 重新启动计算机 - 在偏好设置中启用iCloud Drive - 真实地流泪,感受到喜悦的眼泪

3警告:在执行此操作之前,请先备份您的文件。~/Library/Caches/com.apple.bird 可能存储了您修改过但与iCloud Drive不同步且在其他地方不存在的文件。如果您因为同步问题而按照这些步骤进行操作,而没有先备份本地更改,可能会导致数据丢失。 - bjb568
就我所知,对于“Unicode字符”,我没有任何问题,所以我不确定为什么你认为这是任何问题的一部分,@Christopher Camps。自从很久以前,macOS就完全支持Unicode。 - MiB
1我几乎可以肯定你不知道什么是Unicode。Unicode是一种用于编码字符的标准。自OSX以来,macOS一直使用Unicode来编码文件名。这意味着所有字符都是使用Unicode进行编码的。然而,即使macOS不使用Unicode,你的评论仍然没有意义。这是因为所有的字符只是会使用不同的标准进行编码而已。 - Peter Schorn
@PeterSchorn 非常感谢你非常周到和有帮助的评论。显然,我指的是 iOS 毫无问题地创建但导致同步系统其他部分出现故障的「不常见」Unicode 字符。 - Christopher Camps
1@ChristopherCamps好吧,那么你应该说出来,因为对我来说并不明显,其他评论你的答案的人似乎也没有得出这样的解释。 - Peter Schorn

我写了一个脚本。使用sudo...所以请小心使用!
#!/bin/bash

if [[ $EUID -eq 0 ]]; then
    echo "Killing bird."
    killall bird
    echo "Removing CloudDocs"
    cd ~/Library/Application\ Support
    rm -rf CloudDocs
    echo "Immediately rebooting!"
    shutdown -r now
else
    echo "
    This script needs run as sudo. 
    Use CAUTION when doing so.
    You accept full responsibility using this script.
    You should know what it's doing BEFORE you run it.
    "
fi

自动立即重新启动。

1太好了!然而,在大多数情况下,我只需要第一行来解决这个问题。所以有时会有点过度了。 - MiB
3在这里,我再增加一个+1。在Catalina上,我只需要执行killall bird命令,iCloud就会立即开始同步目录结构和文件。 - Jake Bathman

谢谢。我的解决方案有点不同,而且我自己也没有完全理解,所以没有发表出来。
我的问题与系统中的多个网络接口有关 - 具体来说,是两个活动的以太网连接。删除/重新创建接口以及升级到 macOS 10.13.2 的组合使iCloud能够正常工作,但我只知道这是由于多个网络连接引起的问题。

我之前遇到了和Brian类似的问题——早些时候我使用iPhone USB连接网络,但后来切换到Wifi后,iCloud无法同步。我打开了VPN后,它立即开始同步。切换网络连接似乎会引起这个问题,但也能解决它。

打开活动监视器,强制退出cloudd进程。