Kann der Fortschritt der iCloud-Synchronisierung beobachtet werden?

14

Ich habe meinen Mac mit OS X 10.8 so eingerichtet, dass ich den Inhalt seines iCloud-Repository 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 Hilfsprogramme oder integrierte Funktionen von OS X, mit denen ich das alles sehen kann?

Dies sind gültige Fragen, auch wenn iCloud nicht explizit im Dateisystem verfügbar gemacht wurde. Sie sind jedoch sinnvoller, wenn Sie eine große Anzahl von Dateien explizit in das iCloud-Repository kopieren.

Andrew Ferrier
quelle

Antworten:

2

Aktivität

Der folgende Befehl wird während der Arbeit mit iCloud mit Apps (wie Smultron 4 und TextEdit) ausgeführt, die Mobile Documents unterstützen:

sudo opensnoop -n ubd

- Zeigt lokale Dateien an, die vom Ubiquity-Daemon geöffnet wurden. Dateien enthalten 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 Typen gemessen werden sollen:

  • Kerndatei
  • Unterlagen
  • Schlüsselwert.

Speichert, Fortschritt und Messung

Kerndatei

… Die Änderungsprotokolldateien, nicht die Speicherdatei, werden zu iCloud hochgeladen und auf die anderen Geräte eines Benutzers heruntergeladen. Wenn ein Änderungsprotokoll von einem anderen Gerät eingeht, das an dasselbe iCloud-Konto angeschlossen 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. …

Bedenken Sie: Lohnt es sich, den Fortschritt des Hochladens der Protokolldatei zu messen, ohne den Inhalt eines Änderungsprotokolls zu interpretieren ?

Unterlagen

In der Mac Developer Library:

… Auf Dokumenten basierende Apps können die automatische Speicherung übernehmen, und ihre Dokumente werden zu geeigneten Zeiten automatisch gespeichert.…

Ebenfalls:

Automatische Strategien zum Speichern von Daten 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 Zeitpunkten, zu denen Sie Benutzerdaten automatisch speichern können, gehören:

  • Wenn der Benutzer das App-Fenster schließt oder die App beendet (applicationWillTerminate :)
  • Wenn die App deaktiviert ist (applicationWillResignActive :)
  • Wenn der Benutzer Ihre App versteckt (applicationWillHide :)
  • Wann immer der Benutzer eine gültige Änderung an den 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 so speichern, wie er geändert wurde, 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, aber auch eine differenziertere Verwaltung Ihres Datenmodells erforderlich ist. …

Bedenken Sie: Diese Speichervorgänge sind möglicherweise so häufig und die Beträge so gering, dass sich eine Messung nicht lohnt.

item-info.db

Ich spielte mit SQLite Database Browser, um die item-info.dbDatenbank nach dem Peer zu durchsuchen, der mein lokaler Mac zu sein scheint. Wie ich vermutet hatte, konnte die App nur browsen, während das System die Datenbank nicht verwendete. Innerhalb von zwei Sekunden nach dem Bearbeiten einer Untitled.pngin iCloud mit Vorschau konnte ich die Datenbank nicht mehr durchsuchen.

Verweise

iCloud Design Guide

Mac App-Programmierhandbuch : Das Kerndesign der App:

Graham Perrin
quelle
Das ist ziemlich gut, danke. Der von Ihnen eingegebene Befehl erzeugt keine besonders benutzerfreundliche Ausgabe (und geht nicht wirklich auf den Zustand der Synchronisierung / Nicht-Synchronisierung, des Hoch- / Herunterladens usw. ein), ist jedoch näher als alles andere.
Andrew Ferrier
Danke - theoretisch könnten wir mit DTrace-basierten Befehlen mehr anfangen, iosnoopaber nicht alles, was mit DTrace zu tun hat, funktioniert unter OS X perfekt. Auch ich bin gespannt auf die Dinge, die in dieser Antwort nicht behandelt werden.
Graham Perrin
5

Es gibt keine integrierten OS X-Tools, die speziell für die Anzeige von iCloud-Synchronisierungsinformationen entwickelt wurden.

Seit OS X 10.8.2 hat Apple diese Informationen nicht mehr veröffentlicht. Sofern Apple keine OS X-Anwendungsprogrammierschnittstellen (Application Programmer Interfaces, APIs) veröffentlicht, um die gesuchten Informationen bereitzustellen, kann kein Dritter die Synchronisierungsdetails genau bereitstellen.

In Anbetracht dessen geben Sie bitte dem iCloud-Team von Apple Feedback . Lassen Sie die Ingenieure von Apple wissen, was Sie möchten 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 einige Einsichten, liefern jedoch keine erwarteten Laufzeiten oder prozentualen vollständigen Kennzahlen.

Um den Datenfluss zu untersuchen, untersuchen Sie die in OS X integrierten Tools wie lsof und netstat .

Graham Miln
quelle
1
Danke für die Antwort. Hätte gedacht, dass dies der Fall sein könnte, aber ich hatte gehofft, jemand anderes hätte den Verkehrsfluss bereits rückgängig gemacht, ein Werkzeug gebaut usw.
Andrew Ferrier
1

Wenn Sie wirklich sehen möchten, was los ist, können Sie tcpdump (/ usr / sbin / tcpdump) verwenden, das die Paketerfassung durchführt. Es zeigt Ihnen die Pakete, wie sie über das Netzwerk gehen. Dies ist nicht die einfachste, aber die umfassendste Methode, um diese Daten anzuzeigen.

Greg Cain
quelle
Irgendeine Idee, welche Ports angeschaut werden sollten? Meine Vermutung ist mindestens 80, 443 und 5223. Um E-Mails einzuschließen, fügen Sie 25, 587 und 993 hinzu.
Marnix A. van Ammers,
1

Ab OS X 10.11 (wenn nicht 10.10) zeigt der Finder die Anzahl der Dateien an, wenn Sie einen Unterordner Ihres iCloud-Laufwerks im Finder geöffnet haben, während Sie Dateien in iCloud ändern, und die Statusleiste dieses Fensters aktiviert ist synchronisiert werden und wie viele Daten bisher übertragen wurden.

user1134918
quelle
In OSX 10.13.6 werden diese Informationen nicht in der Statusleiste angezeigt. Ich sehe einen kleinen Kreis neben dem iCloud-Symbol des Finders in der Seitenleiste. Ich kann darauf klicken, um Informationen zu übertragenen Daten zu erhalten.
Marnix A. van Ammers
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 der Hierarchie Ihres iCloud Drive-Ordners liegt .
user1134918
Es scheint, dass Bilder nicht in Kommentare eingebettet werden, aber siehe i.imgur.com/deKecx9.png
user1134918
0

Das Folgende 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 Befehl lsof ergibt Folgendes:

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.

Glückwunsch
quelle
Wo führen Sie diesen Befehl aus? Wie sieht die Ausgabe aus?
Andrew Ferrier
Vom Terminal aus.
BIFFOM
1
Sie müssen ~ / Pictures nicht cd. nicht sicher, warum patrix das bearbeitet hat?
BIFFOM
Du hast recht, verstehst deine Absicht falsch. OTOH, Sie können Ihre Antwort bearbeiten, um zusätzlichen Inhalt hinzuzufügen. Sie müssen keinen zweiten posten.
Nohillside