Czy można obserwować postęp synchronizacji iCloud?

14

Mam komputer Mac z systemem OS X 10.8 skonfigurowany tak, że mogę zobaczyć zawartość jego repozytorium iCloud w ~/Library/Mobile Documents(zobacz to pytanie i to pytanie, aby uzyskać więcej informacji o tym, jak to działa). Chciałbym jednak móc zobaczyć / wizualizować / zrozumieć stan synchronizacji mojego komputera Mac:

  • Czy mój Mac jest zsynchronizowany z iCloud?
  • Jeśli nie, co jest przesyłane / pobierane / jak długo to potrwa?
  • Czy są jakieś narzędzia lub wbudowane funkcje OS X, które pozwolą mi to zobaczyć?

Są to ważne pytania, nawet jeśli iCloud nie jest jawnie ujawniony w systemie plików, ale są oczywiście bardziej przydatne, jeśli jawnie skopiujesz dużą liczbę plików do / z repozytorium iCloud.

Andrew Ferrier
źródło

Odpowiedzi:

2

Czynność

Następujące polecenie uruchom podczas pracy z iCloud z aplikacjami (takimi jak Smultron 4 i TextEdit), które obsługują dokumenty mobilne -

sudo opensnoop -n ubd

- pokazuje lokalne pliki otwarte przez demona wszechobecności. Pliki obejmują bazy danych, po jednej bazie danych na peera. Jeden katalog na peera w następującej ścieżce:

~/Library/Application Support/Ubiquity

Rodzaje danych

Jeśli chcesz mierzyć postęp, zdecyduj, które typy mierzyć:

  • Podstawowe dane
  • dokumenty
  • kluczowa wartość.

Oszczędności, postęp i pomiary

Podstawowe dane

… Pliki dziennika zmian, a nie plik sklepu, są przesyłane do iCloud i pobierane na każde inne urządzenie użytkownika. Gdy dziennik zmian przybywa z innego urządzenia podłączonego do tego samego konta iCloud, Core Data aktualizuje lokalną kopię bazy danych SQLite w aplikacji na podstawie otrzymanego dziennika zmian. iCloud i podstawowe dane zapewniają, że każda lokalna baza danych jest aktualizowana o ten sam zestaw zmian. …

Zastanów się: czy bez interpretowania zawartości dziennika zmian warto mierzyć postęp przesyłania pliku dziennika?

Dokumenty

W bibliotece programistów Mac:

… Aplikacje oparte na dokumentach mogą stosować automatyczne zapisywanie w miejscu, a ich dokumenty są automatycznie zapisywane w odpowiednich momentach…

Również:

Automatyczne strategie zapisywania danych Uwalniają użytkownika

… Odpowiednie punkty w kodzie, w których należy zapisać wszelkie zmiany związane z użytkownikiem i zapisać je automatycznie na dysku. …

Niektóre odpowiednie czasy, w których można automatycznie zapisać dane użytkownika, obejmują:

  • Gdy użytkownik zamyka okno aplikacji lub zamyka aplikację (applicationWillTerminate :)
  • Gdy aplikacja jest wyłączona (applicationWillResignActive :)
  • Gdy użytkownik ukrywa Twoją aplikację (applicationWillHide :)
  • Za każdym razem, gdy użytkownik dokona prawidłowej zmiany danych w aplikacji

Ostatni element oznacza, że ​​masz swobodę zapisywania danych użytkownika w dowolnym momencie, gdy ma to sens. Na przykład, jeśli użytkownik edytuje pola rekordu danych, możesz zapisać każdą wartość pola w miarę jej zmiany lub możesz poczekać i zapisać wszystkie pola, gdy użytkownik wyświetli nowy rekord. Wprowadzanie tego rodzaju zmian przyrostowych zapewnia, że ​​dane są zawsze aktualne, ale wymaga również bardziej szczegółowego zarządzania modelem danych. …

Zastanów się: te zapisy mogą być tak częste, a kwoty tak małe, że pomiar nie będzie opłacalny.

item-info.db

Korzystałem z przeglądarki SQLite Database Browser, aby przeglądać item-info.dbbazę danych w poszukiwaniu peera, który wydaje się być moim lokalnym komputerem Mac. Jak podejrzewałem, aplikacja mogła przeglądać tylko wtedy, gdy system nie korzystał z bazy danych - w ciągu dwóch sekund od użycia podglądu do edycji Untitled.pngw iCloud nie mogłem już przeglądać bazy danych ... i tak dalej.

Bibliografia

Przewodnik projektowania iCloud

Przewodnik programowania aplikacji na komputery Mac : Podstawowy projekt aplikacji:

Graham Perrin
źródło
To całkiem nieźle, dzięki. Polecenie, które podajesz, nie generuje szczególnie przyjaznych dla użytkownika danych wyjściowych (i tak naprawdę nie odnosi się do stanu insynchronizacji / braku synchronizacji, przesyłania / pobierania itp.), Ale jest bliżej niż cokolwiek innego do tej pory.
Andrew Ferrier
Dzięki - teoretycznie moglibyśmy zrobić więcej z poleceniami opartymi na DTrace, takimi jak, iosnoopale nie wszystkie, rzeczy związane z DTrace działają doskonale w OS X. Ja też jestem ciekawy rzeczy, które nie są objęte tą odpowiedzią.
Graham Perrin
5

Nie ma wbudowanych narzędzi OS X zaprojektowanych specjalnie do wyświetlania informacji o synchronizacji iCloud.

Począwszy od OS X 10.8.2, Apple nie upublicznia tych informacji. O ile Apple nie opublikuje interfejsów API (OS) aplikacji OS X w celu zapewnienia poszukiwanych informacji, żadna strona trzecia nie będzie w stanie dokładnie podać szczegółów synchronizacji.

Biorąc to pod uwagę, prosimy o opinię zespołu Apple iCloud ; poinformuj inżynierów Apple, czego chcesz i dlaczego.

Podczas oczekiwania możesz śledzić połączenia z serwerami Apple iCloud, mierzyć przepływ ruchu i dostęp do dysku. Dane te zapewnią pewien wgląd, ale nie zapewnią oczekiwanego czasu trwania ani procentu pełnych miar.

Aby zbadać przepływ danych, zapoznaj się z wbudowanymi narzędziami systemu OS X, takimi jak lsof i netstat .

Graham Miln
źródło
1
Dziękuję za odpowiedź. Domyślałam się, że może tak być, ale miałam nadzieję, że ktoś już zmodyfikował przepływ ruchu, zbudował narzędzie itp.
Andrew Ferrier,
1

Jeśli NAPRAWDĘ chcesz zobaczyć, co się dzieje, możesz użyć tcpdump (/ usr / sbin / tcpdump), który przechwytuje pakiety. Pokaże ci pakiety, gdy idą przez sieć. To nie jest najłatwiejszy, ale to najbardziej wszechstronny sposób, aby zobaczyć te dane.

Greg Cain
źródło
Masz pojęcie, na które porty należy spojrzeć? Domyślam się, że to co najmniej 80, 443 i 5223, aby dołączyć e-mail, dodaj 25, 587 i 993.
Marnix A. van Ammers
1

Począwszy od OS X 10.11 (jeśli nie 10.10), jeśli podczas zmiany plików w iCloud otwarty jest dowolny podfolder dysku iCloud Drive, a pasek stanu tego okna jest włączony, Finder poinformuje cię, ile plików jest synchronizowane i ile danych zostało dotychczas przesłanych.

użytkownik1134918
źródło
W OSX 10.13.6 nie widzę tych informacji na pasku stanu. Widzę małe kółko obok ikony iCloud wyszukiwarki na pasku bocznym. Mogę kliknąć tę opcję, aby uzyskać informacje o przesyłanych danych.
Marnix A. van Ammers,
Zobacz zrzut ekranu - pasek stanu (⌘- / do pokazania) biegnący wzdłuż dolnej części okna powinien wyświetlać postęp synchronizacji z iCloud, pod warunkiem, że jesteś w dowolnym oknie Findera, które mieści się w hierarchii folderu iCloud Drive .
user1134918,
Wygląda na to, że obrazy nie będą osadzane
user1134918
0

Wydaje mi się, że uruchomienie następującego polecenia w Terminalu:

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

Polecenie lsof powoduje:

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

po prostu wydaj go ponownie (strzałka w górę i naciśnij klawisz Return) i powinieneś zobaczyć, jak się zmienia.

biffom
źródło
Gdzie uruchamiasz to polecenie? Jak wygląda wyjście?
Andrew Ferrier
Z terminala.
biffom
1
Nie potrzebujesz cd ~ / Pictures. nie wiesz, dlaczego Patrix to edytował?
biffom
Masz rację, źle odczytałeś swój zamiar. OTOH, możesz edytować swoją odpowiedź, aby dodać dodatkową treść, bez potrzeby publikowania drugiej.
nohillside