Можно ли наблюдать прогресс синхронизации iCloud?

14

Мой Mac под управлением OS X 10.8 настроен так, чтобы я мог видеть содержимое его хранилища iCloud по адресу ~/Library/Mobile Documents(см. Этот вопрос и этот вопрос для получения дополнительной информации о том, как это работает). Тем не менее, я хотел бы иметь возможность видеть / визуализировать / понимать состояние синхронизации моего Mac:

  • Мой Mac синхронизирован с iCloud?
  • Если нет, что загружается / загружается / сколько времени это займет?
  • Существуют ли какие-либо утилиты или встроенные функции OS X, которые позволят мне увидеть все это?

Это правильные вопросы даже без явного раскрытия iCloud в файловой системе, но они, очевидно, более полезны, если вы явно копируете большое количество файлов в / из репозитория iCloud.

Эндрю Ферье
источник

Ответы:

2

Мероприятия

Следующая команда, запускаемая во время работы с iCloud с приложениями (такими как Smultron 4 и TextEdit), которые поддерживают мобильные документы, -

sudo opensnoop -n ubd

- показывает локальные файлы, открытые демоном ubiquity. Файлы включают базы данных, одна база данных на одноранговый узел. Один каталог на одноранговый узел по следующему пути:

~/Library/Application Support/Ubiquity

Типы данных

Если вы хотите измерить прогресс, решите, какие типы измерить:

  • Основные данные
  • документы
  • ключ-значение.

Сохранения, прогресс и измерения

Основные данные

… Файлы журнала изменений, а не файл хранилища, загружаются в iCloud и загружаются на каждое из других устройств пользователя. Когда журнал изменений поступает с другого устройства, подключенного к той же учетной записи iCloud, Core Data обновляет локальную копию вашего приложения базы данных SQLite на основе полученного журнала изменений. iCloud и Core Data гарантируют, что каждая локальная база данных обновляется с одинаковым набором изменений. ...

Подумайте: без интерпретации содержимого журнала изменений, будет ли целесообразно измерить ход загрузки файла журнала?

документы

В библиотеке разработчика Mac:

… Приложения на основе документов могут использовать автосохранение на месте, а его документы автоматически сохраняются в подходящее время…

Также:

Стратегии автоматического сохранения данных помогают пользователю

… Соответствующие точки в вашем коде, где любые изменения, связанные с пользователем, должны быть сохранены и автоматически записать эти изменения на диск. ...

Некоторые подходящие моменты времени, когда вы можете автоматически сохранять пользовательские данные, включают следующее:

  • Когда пользователь закрывает окно приложения или выходит из приложения (applicationWillTerminate :)
  • Когда приложение деактивировано (applicationWillResignActive :)
  • Когда пользователь скрывает ваше приложение (applicationWillHide :)
  • Всякий раз, когда пользователь вносит действительные изменения в данные в вашем приложении

Последний пункт означает, что у вас есть свобода сохранять данные пользователя в любое время, когда это имеет смысл. Например, если пользователь редактирует поля записи данных, вы можете сохранить каждое значение поля по мере его изменения или подождать и сохранить все поля, когда пользователь отобразит новую запись. Внесение этих типов постепенных изменений гарантирует, что данные всегда обновляются, но также требуется более детальное управление вашей моделью данных. ...

Подумайте: такие сохранения могут быть настолько частыми, а суммы настолько малыми, что измерение не будет иметь смысла.

пункт-info.db

Я поиграл с SQLite Database Browser, чтобы просмотреть item-info.dbбазу данных для пира, который, кажется, мой локальный Mac. Как я и подозревал, приложение могло просматривать только тогда, когда система не использовала базу данных - в течение двух секунд после использования Preview для редактирования Untitled.pngв iCloud я больше не мог просматривать базу данных ... и так далее.

Ссылки

Руководство по дизайну iCloud

Руководство по программированию приложений для Mac : основной дизайн приложения:

Грэм Перрин
источник
Это очень хорошо, спасибо. Команда, которую вы даете, не дает особенно удобного для пользователя вывода (и на самом деле не учитывает состояние асинхронизации / несинхронизации, состояния выгрузки / загрузки и т. Д.), Но пока она ближе, чем все остальное.
Эндрю Ферье
Спасибо - в теории мы могли бы сделать больше с командами на основе DTrace, такими как, iosnoopно не все, связанные с DTrace, прекрасно работают на OS X. Мне тоже любопытно, что не отражено в этом ответе.
Грэм Перрин
5

Нет встроенных инструментов OS X, разработанных специально для отображения информации о синхронизации iCloud.

Начиная с OS X 10.8.2, Apple не обнародовала эту информацию. Если Apple не опубликует интерфейсы программирования приложений (API) OS X для предоставления запрашиваемой информации, никакая третья сторона не сможет точно предоставить сведения о синхронизации.

Учитывая это, пожалуйста, оставьте отзыв о команде Apple iCloud ; пусть инженеры Apple знают, чего вы хотите и почему.

Пока вы ждете, вы можете отслеживать соединения с серверами Apple iCloud, измерять поток трафика и доступ к диску. Эти метрики предоставят некоторую информацию, но они не обеспечат ожидаемую продолжительность или процентные показатели завершения.

Чтобы исследовать поток данных, изучите встроенные инструменты OS X, такие как lsof и netstat .

Грэм Милн
источник
1
Спасибо за ответ. Я догадывался, что это может быть так, но я надеялся, что кто-то уже перепроектировал транспортный поток, создал инструмент и т. Д.
Эндрю Ферье
1

Если вы действительно хотите увидеть, что происходит, вы можете использовать tcpdump (/ usr / sbin / tcpdump), который выполняет захват пакетов. Это покажет вам пакеты, когда они идут по сети. Это не самый простой, но самый полный способ увидеть эти данные.

Грег Каин
источник
Есть идеи, на какие порты нужно смотреть? Я думаю, по крайней мере, 80, 443 и 5223. Чтобы включить электронную почту, добавьте 25, 587 и 993.
Marnix A. van Ammers
1

Начиная с OS X 10.11 (если не 10.10), если у вас есть какая-либо подпапка вашего iCloud Drive, открытая в Finder при изменении файлов в iCloud, и строка состояния этого окна включена, Finder сообщит вам, сколько файлов синхронизируется и сколько данных было передано до сих пор.

user1134918
источник
В OSX 10.13.6 я не вижу этой информации в строке состояния. Я вижу маленький кружок рядом со значком iCloud в боковой панели. Я могу нажать на это, чтобы получить некоторую информацию о передаваемых данных.
Марникс А. ван Аммерс
Смотрите скриншот - строка состояния (/- / показать), идущая вдоль нижней части окна, должна отображать ход синхронизации с iCloud, если вы находитесь в любом окне Finder, которое находится в иерархии вашей папки iCloud Drive. ,
user1134918
Похоже, что изображения не будут вставляться в комментарии, но смотрите i.imgur.com/deKecx9.png
user1134918
0

Кажется, выполнение следующего в Терминале помогает мне:

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
источник
Где вы запускаете эту команду? Как выглядит результат?
Эндрю Ферье
С терминала.
biffom
1
Вам не нужно CD ~ / Фотографии. не уверен, почему Patrix отредактировал это в?
biffom
Вы правы, неправильно истолковали свои намерения. OTOH, вы можете отредактировать свой ответ, чтобы добавить дополнительный контент, нет необходимости публиковать второй.
Nohillside