Kann der Fortschritt der iCloud-Synchronisierung beobachtet werden?

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:

  • Ist mein Mac mit iCloud synchronisiert?
  • Wenn nicht, was wird hochgeladen/heruntergeladen/wie lange wird es dauern?
  • Gibt es Dienstprogramme oder integrierte Funktionen von OS X, mit denen ich dies sehen kann?

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.

Antworten (5)

Aktivität

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

Arten von Daten

Wenn Sie den Fortschritt messen möchten, entscheiden Sie, welche Arten Sie messen möchten:

  • Kerndatei
  • Unterlagen
  • Schlüsselwert.

Speichert, Fortschritt und Messung

Kerndatei

… 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?

Unterlagen

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.

item-info.db

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.pngin iCloud konnte ich die Datenbank nicht mehr durchsuchen … und so weiter.

Verweise

iCloud-Designleitfaden

Programmierhandbuch für Mac-Apps : Das zentrale App-Design:

Das ist ziemlich gut, danke. Der Befehl, den Sie geben, erzeugt keine besonders benutzerfreundliche Ausgabe (und befasst sich nicht wirklich mit dem Insync/Out-of-Sync-Status, dem Upload-/Download-Status usw.), aber er ist bisher näher als alles andere.
Danke – theoretisch könnten wir mehr mit DTrace-basierten Befehlen machen, iosnoopaber 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.

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 .

Danke für die Antwort. Ich hatte vermutet, dass dies der Fall sein könnte, aber ich hatte gehofft, dass jemand anderes den Verkehrsfluss bereits rückentwickelt, ein Tool erstellt usw.

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.

Irgendeine Idee, welche Häfen betrachtet werden sollten? Meine Schätzung ist mindestens 80, 443 und 5223. Um E-Mail einzuschließen, fügen Sie 25, 587 und 993 hinzu.

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.

Wo führen Sie diesen Befehl aus? Wie sieht die Ausgabe aus?
Vom Endgerät.
Sie brauchen ~/Pictures nicht zu cd. nicht sicher, warum patrix das in bearbeitet hat?
Sie haben Recht, haben Ihre Absicht falsch verstanden. OTOH, Sie können Ihre Antwort bearbeiten, um zusätzliche Inhalte hinzuzufügen, ohne dass Sie eine zweite posten müssen.

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.

In OSX 10.13.6 sehe ich diese Informationen nicht in der Statusleiste. Ich sehe einen kleinen Kreis neben dem iCloud-Symbol des Finders in der Seitenleiste. Ich kann darauf klicken, um Informationen zu den übertragenen Daten zu erhalten.
Siehe Screenshot – die Statusleiste (⌘-/ zum Anzeigen) am unteren Rand des Fensters sollte den Fortschritt der Synchronisierung mit iCloud anzeigen, solange Sie sich in einem Finder-Fenster befinden, das in die Hierarchie Ihres iCloud Drive-Ordners fällt .
Es scheint, dass Bilder nicht in Kommentare eingebettet werden, aber siehe i.imgur.com/deKecx9.png