Ich habe meinen Mac mit OS X 10.8 so eingerichtet, dass ich den Inhalt seines iCloud-Repositorys unter sehen kann ~/Library/Mobile Documents
(siehe diese Frage und diese Frage für weitere Informationen darüber, wie das funktioniert). Ich möchte jedoch den Synchronisierungsstatus meines Mac sehen / visualisieren / verstehen können:
Dies sind gültige Fragen, auch wenn iCloud nicht explizit im Dateisystem verfügbar gemacht wird, aber offensichtlich nützlicher ist, wenn Sie eine große Anzahl von Dateien explizit in das / aus dem iCloud-Repository kopieren.
Führen Sie den folgenden Befehl aus, während Sie mit iCloud mit Apps (wie Smultron 4 und TextEdit) arbeiten, die mobile Dokumente unterstützen –
sudo opensnoop -n ubd
– zeigt lokale Dateien, die vom Ubiquity-Daemon geöffnet wurden. Dateien umfassen Datenbanken, eine Datenbank pro Peer. Ein Verzeichnis pro Peer unter folgendem Pfad:
~/Library/Application Support/Ubiquity
Wenn Sie den Fortschritt messen möchten, entscheiden Sie, welche Arten Sie messen möchten:
… Die Änderungsprotokolldateien, nicht die Speicherdatei, werden in iCloud hochgeladen und auf jedes andere Gerät eines Benutzers heruntergeladen. Wenn ein Änderungsprotokoll von einem anderen Gerät eintrifft, das mit demselben iCloud-Konto verbunden ist, aktualisiert Core Data die lokale Kopie der SQLite-Datenbank Ihrer App basierend auf dem empfangenen Änderungsprotokoll. iCloud und Core Data stellen sicher, dass jede lokale Datenbank mit denselben Änderungen aktualisiert wird. …
Überlegen Sie: Ohne den Inhalt eines Änderungsprotokolls zu interpretieren, lohnt es sich, den Fortschritt des Hochladens der Protokolldatei zu messen?
In der Mac-Entwicklerbibliothek:
… Dokumentenbasierte Apps können automatisches Speichern übernehmen, und ihre Dokumente werden automatisch zu geeigneten Zeiten gespeichert …
Ebenfalls:
Automatische Datensparstrategien entlasten den Benutzer
… geeignete Stellen in Ihrem Code, an denen benutzerbezogene Änderungen gespeichert werden sollen, und diese Änderungen automatisch auf die Festplatte schreiben. …
Zu den geeigneten Zeiten, in denen Sie Benutzerdaten automatisch speichern können, gehören die folgenden:
- Wenn der Benutzer das App-Fenster schließt oder die App beendet (applicationWillTerminate:)
- Wenn die App deaktiviert ist (applicationWillResignActive:)
- Wenn der Benutzer Ihre App ausblendet (applicationWillHide:)
- Immer wenn der Benutzer eine gültige Änderung an Daten in Ihrer App vornimmt
Der letzte Punkt bedeutet, dass Sie die Freiheit haben, die Daten des Benutzers jederzeit zu speichern, wenn dies sinnvoll ist. Wenn der Benutzer beispielsweise Felder eines Datensatzes bearbeitet, können Sie jeden Feldwert speichern, während er geändert wird, oder Sie können warten und alle Felder speichern, wenn der Benutzer einen neuen Datensatz anzeigt. Durch diese Art von inkrementellen Änderungen wird sichergestellt, dass die Daten immer auf dem neuesten Stand sind, erfordert aber auch eine differenziertere Verwaltung Ihres Datenmodells. …
Bedenken Sie: Diese Einsparungen können so häufig und die Beträge so gering sein, dass sich eine Messung nicht lohnt.
Ich habe mit dem SQLite-Datenbankbrowser herumgespielt , um die Datenbank nach dem Peer zu durchsuchen item-info.db
, der anscheinend mein lokaler Mac ist. Wie ich vermutet hatte, konnte die App nur durchsuchen, während das System die Datenbank nicht verwendete – innerhalb von zwei Sekunden nach der Verwendung der Vorschau zum Bearbeiten einer Untitled.png
in iCloud konnte ich die Datenbank nicht mehr durchsuchen … und so weiter.
Programmierhandbuch für Mac-Apps : Das zentrale App-Design:
Es gibt keine integrierten OS X-Tools, die explizit darauf ausgelegt sind, Ihnen iCloud-Synchronisierungsinformationen anzuzeigen.
Ab OS X 10.8.2 hat Apple diese Informationen nicht veröffentlicht. Sofern Apple keine OS X Application Programmer Interfaces (APIs) veröffentlicht, um die gewünschten Informationen bereitzustellen, kann kein Dritter die Synchronisierungsdetails genau bereitstellen.
Geben Sie in Anbetracht dessen bitte Feedback an das iCloud-Team von Apple ; Lassen Sie die Ingenieure von Apple wissen, was Sie wollen und warum.
Während Sie warten, können Sie Verbindungen zu den iCloud-Servern von Apple nachverfolgen, den Verkehrsfluss und den Festplattenzugriff messen. Diese Metriken bieten einen gewissen Einblick, aber sie liefern keine erwarteten Dauern oder prozentualen Abschlussmessungen.
Um den Datenfluss zu untersuchen, erkunden Sie die integrierten Tools von OS X wie lsof und netstat .
Wenn Sie WIRKLICH sehen wollen, was vor sich geht, können Sie tcpdump (/usr/sbin/tcpdump) verwenden, das die Paketerfassung durchführt. Es zeigt Ihnen die Pakete, während sie über das Netzwerk gehen. Es ist nicht die einfachste, aber die umfassendste Möglichkeit, diese Daten anzuzeigen.
Folgendes im Terminal auszuführen scheint für mich der Trick zu sein:
lsof | grep "Photos Library.photoslibrary/private/com.apple.cloudphotosd/CloudSync.noindex/Engine/filecache"
Der lsof-Befehl führt dazu:
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
Geben Sie es einfach erneut aus (Pfeil nach oben und drücken Sie die Eingabetaste), und Sie sollten sehen, dass es sich ändert.
Wenn Sie ab OS X 10.11 (falls nicht 10.10) einen Unterordner Ihres iCloud-Laufwerks im Finder geöffnet haben, während Sie Dateien in iCloud ändern, und die Statusleiste dieses Fensters eingeschaltet ist, teilt Ihnen der Finder mit, wie viele Dateien es sind synchronisiert und wie viele Daten bisher übertragen wurden.
Andreas Ferrier
Graham Perrin
iosnoop
aber nicht alle Dinge, die mit DTrace zu tun haben, funktionieren perfekt unter OS X. Auch ich bin neugierig auf die Dinge, die von dieser Antwort nicht abgedeckt werden.