可以观察到iCloud同步进度吗?


14

我安装了运行OS X 10.8的Mac,以便可以在以下位置查看其iCloud存储库的内容~/Library/Mobile Documents(有关工作原理的更多信息,请参阅此问题此问题)。但是,我希望能够查看/可视化/理解Mac的同步状态:

  • 我的Mac是否与iCloud同步?
  • 如果没有,上传/下载的内容/需要多长时间?
  • OS X是否有任何实用程序或内置功能可让我看到其中任何一个?

即使没有在文件系统中显式显示iCloud,这些问题也是有效的问题,但是如果您将大量文件显式复制到iCloud存储库中,则显然更有用。

Answers:


2

活动

在与支持移动文档的应用程序(例如Smultron 4和TextEdit)一起使用iCloud时,运行以下命令-

sudo opensnoop -n ubd

–显示由普遍存在的守护程序打开的本地文件。文件包括数据库,每个对等体一个数据库。每个对等方在以下路径中有一个目录:

~/Library/Application Support/Ubiquity

资料类型

如果您想衡量进度,请决定要衡量的类型:

  • 核心数据
  • 单据
  • 核心价值。

保存,进度和度量

核心数据

…更改日志文件(而不是存储文件)被上传到iCloud并下载到用户的其他每个设备。当更改日志从连接到同一iCloud帐户的另一台设备到达时,Core Data会根据收到的更改日志来更新您应用的SQLite数据库本地副本。iCloud和Core Data确保使用相同的更改集更新每个本地数据库。…

考虑:在不解释变更日志内容的情况下,是否值得评估日志文件的上载进度?

文件资料

在Mac开发人员库中:

…基于文档的应用程序可以采用自动保存功能,并且其文档会在适当的时间自动保存…

也:

自动数据保存策略可减轻用户的负担

…在代码中的适当点,应保存与用户相关的所有更改,并将这些更改自动写入磁盘。…

可以自动保存用户数据的一些合适时间包括:

  • 当用户关闭应用程序窗口或退出应用程序时(applicationWillTerminate :)
  • 停用应用程序时(applicationWillResignActive :)
  • 当用户隐藏您的应用程序时(applicationWillHide :)
  • 每当用户对您应用中的数据进行有效更改时

最后一项意味着您可以在任何有意义的时间自由保存用户的数据。例如,如果用户正在编辑数据记录的字段,则可以在更改每个字段值时将其保存,或者可以在用户显示新记录时等待并保存所有字段。进行这些类型的增量更改可确保数据始终是最新的,但也需要对数据模型进行更细粒度的管理。…

考虑一下:这些节省可能太频繁了,而且金额如此之小,以致于测量是不值得的。

item-info.db

我玩过SQLite数据库浏览器,以浏览item-info.db数据库以查找似乎是我的本地Mac的对等方。正如我所怀疑的那样,该应用程序只能在系统不使用数据库的情况下进行浏览–在使用Preview Untitled.png在iCloud中进行编辑的两秒钟之内,我无法再浏览数据库……等等。

参考文献

iCloud设计指南

Mac App编程指南:核心App设计:


很好,谢谢。您提供的命令不会产生特别用户友好的输出(并不能真正解决异步/不同步状态,上载/下载状态等),但是到目前为止,它比其他任何命令都更接近。
安德鲁·费里尔

谢谢–从理论上讲,我们可以对基于DTrace的命令做更多的iosnoop事情,例如但不是所有与DTrace相关的命令都能在OS X上完美运行。我也很好奇这个答案未涵盖的事情。
格雷厄姆·佩林

5

没有明确设计用于显示iCloud同步信息的内置OS X工具。

从OS X 10.8.2开始,Apple尚未公开此信息。除非Apple发布OS X应用程序程序员接口(API)来提供您要查找的信息,否则任何第三方将无法准确提供同步详细信息。

鉴于此,请给苹果的iCloud团队反馈;让苹果的工程师知道您想要什么以及为什么。

在等待期间,您可以跟踪与Apple iCloud服务器的连接,测量流量和磁盘访问。这些指标将提供一些见解,但不会提供预期的持续时间或完成指标的百分比。

要探索数据流,请探索OS X的内置工具,如lsofnetstat


1
感谢您的回答。已经猜到这可能是这样,但我希望别人已经实施了逆向工程的流量,建立了一个工具,等等
安德鲁·费里尔

1

如果您真的想看看发生了什么,可以使用tcpdump(/ usr / sbin / tcpdump)进行数据包捕获。当数据包通过网络时,它将向您显示这些数据包。这不是最简单的方法,但却是查看此数据的最全面的方法。


知道应该查看哪个端口吗?我的猜测是至少80,443,和5223,包含电子邮件,加25,587,993和
马尼克斯A.面包车Ammers

1

从OS X 10.11(如果不是10.10)开始,如果在iCloud中更改文件时在Finder中打开了iCloud Drive的任何子文件夹,并且该窗口的状态栏已打开,则Finder会告诉您有多少文件正在同步以及到目前为止已传输了多少数据。


在OSX 10.13.6中,我在状态栏中看不到该信息。我在侧边栏中的查找程序的iCloud图标旁边确实看到一个小圆圈。我可以单击它以获取有关正在传输的数据的一些信息。
Marnix A. van Ammers

查看屏幕快照-只要您位于iCloud Drive文件夹层次结构内的任何Finder窗口中,沿着窗口底部运行的状态栏(⌘-/以显示)应显示与iCloud同步的进度。 。
user1134918 '18

看来图片不会嵌入评论中,但请参阅i.imgur.com/deKecx9.png
user1134918

0

在Terminal中运行以下命令似乎对我有用:

lsof | grep "Photos Library.photoslibrary/private/com.apple.cloudphotosd/CloudSync.noindex/Engine/filecache"

lsof命令导致以下结果:

cloudd    11237 carl   10r     REG                1,4   3009775 1460206 /Users/carl/Pictures/Photos Library.photoslibrary/private/com.apple.cloudphotosd/CloudSync.noindex/Engine/filecache/AYX/cplAYX8CMwjKIhIUqNRCwXobzKHe9iC.jpeg
cloudd    11237 carl   21r     REG                1,4   2465075 1460208 /Users/carl/Pictures/Photos Library.photoslibrary/private/com.apple.cloudphotosd/CloudSync.noindex/Engine/filecache/ATL/cplATLqV8CAvtA70qoJqZ21PimnEIPe.jpeg

只需再次发出它(向上箭头并按回车键),您应该会看到它已更改。


您在哪里运行此命令?输出是什么样的?
安德鲁·费里尔

从终端。
biffom'Apr

1
您不需要cd〜/ Pictures。不确定为什么patrix编辑了它?
biffom'Apr

你是对的,误读了你的意图。OTOH,您可以编辑答案以添加其他内容,而无需发布其他内容。
nohillside
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.