O progresso da sincronização do iCloud pode ser observado?


14

Eu tenho meu Mac executando o OS X 10.8 configurado para que eu possa ver o conteúdo de seu repositório do iCloud em ~/Library/Mobile Documents(consulte esta pergunta e esta pergunta para obter mais informações sobre como isso funciona). No entanto, eu gostaria de poder ver / visualizar / entender o estado de sincronização do meu Mac:

  • Meu Mac está sincronizado com o iCloud?
  • Caso contrário, o que está sendo carregado / baixado / quanto tempo levará?
  • Existem utilitários ou recursos internos do OS X que me permitam ver isso?

Essas são perguntas válidas mesmo sem o iCloud explicitamente exposto no sistema de arquivos, mas são obviamente mais úteis se você copiar números em massa de arquivos dentro / fora do repositório do iCloud explicitamente.

Respostas:


2

Atividade

O comando a seguir, execute enquanto trabalha com o iCloud com aplicativos (como Smultron 4 e TextEdit) compatíveis com o Mobile Documents -

sudo opensnoop -n ubd

- mostra arquivos locais abertos pelo daemon de onipresença. Os arquivos incluem bancos de dados, um banco de dados por ponto. Um diretório por ponto no seguinte caminho:

~/Library/Application Support/Ubiquity

Tipos de dados

Se você deseja medir o progresso, decida quais tipos medir:

  • Dados principais
  • documentos
  • valor chave.

Economias, progresso e medição

Dados principais

… Os arquivos de log de alterações, e não o arquivo de armazenamento, são carregados no iCloud e baixados para cada um dos outros dispositivos de um usuário. Quando um log de alterações chega de outro dispositivo conectado à mesma conta do iCloud, o Core Data atualiza a cópia local do aplicativo do banco de dados SQLite, com base no log de alterações recebido. O iCloud e o Core Data garantem que cada banco de dados local seja atualizado com o mesmo conjunto de alterações. ...

Considere: sem interpretar o conteúdo de um log de alterações, valerá a pena medir o progresso do upload do arquivo de log?

Documentos

Na Biblioteca do desenvolvedor para Mac:

Os aplicativos baseados em documentos podem adotar o salvamento automático, e seus documentos são salvos automaticamente em momentos apropriados.

Além disso:

Estratégias automáticas de economia de dados aliviam o usuário

… Pontos apropriados no seu código onde qualquer alteração relacionada ao usuário deve ser salva e gravada automaticamente no disco. ...

Alguns momentos apropriados em que você pode salvar dados do usuário incluem automaticamente o seguinte:

  • Quando o usuário fecha a janela do aplicativo ou sai do aplicativo (applicationWillTerminate :)
  • Quando o aplicativo é desativado (applicationWillResignActive :)
  • Quando o usuário oculta seu aplicativo (applicationWillHide :)
  • Sempre que o usuário faz uma alteração válida nos dados do seu aplicativo

O último item significa que você tem a liberdade de salvar os dados do usuário a qualquer momento que fizer sentido. Por exemplo, se o usuário estiver editando os campos de um registro de dados, você poderá salvar cada valor do campo conforme for alterado ou poderá aguardar e salvar todos os campos quando o usuário exibir um novo registro. Fazer esses tipos de alterações incrementais garante que os dados estejam sempre atualizados, mas também exige um gerenciamento mais refinado do seu modelo de dados. ...

Considere: essas economias podem ser tão frequentes e as quantias tão pequenas que essa medição não vale a pena.

item-info.db

Eu brinquei com o SQLite Database Browser para procurar no item-info.dbbanco de dados o par que parece ser o meu Mac local. Como eu suspeitava, o aplicativo só podia navegar enquanto o sistema não estava usando o banco de dados - dois segundos depois de usar a Visualização para editar um Untitled.pngno iCloud, eu não conseguia mais navegar no banco de dados ... e assim por diante.

Referências

Guia de Design do iCloud

Guia de programação de aplicativos para Mac : o design principal do aplicativo:


Isso é muito bom, obrigado. O comando que você dá não produz uma saída particularmente amigável (e realmente não aborda o estado insync / fora de sincronia, o estado de upload / download etc.), mas está mais próximo do que qualquer outra coisa até agora.
Andrew Ferrier

Obrigado - em teoria, poderíamos fazer mais com comandos baseados no DTrace, como, iosnoopmas nem todas, as coisas relacionadas ao DTrace funcionam perfeitamente no OS X. Também estou curioso sobre o que não é coberto por esta resposta.
Graham Perrin

5

Não há ferramentas internas do OS X projetadas explicitamente para mostrar as informações de sincronização do iCloud.

A partir do OS X 10.8.2, a Apple não tornou essas informações públicas. A menos que a Apple publique APIs (Application Programmer Interfaces) para fornecer as informações que você procura, nenhum terceiro poderá fornecer com precisão os detalhes da sincronização.

Diante disso, envie um feedback da equipe iCloud da Apple ; informe aos engenheiros da Apple o que você quer e por quê.

Enquanto espera, você pode acompanhar as conexões com os servidores iCloud da Apple, medir o fluxo de tráfego e o acesso ao disco. Essas métricas fornecerão algumas informações, mas não fornecerão durações esperadas ou medidas de porcentagem completa.

Para explorar o fluxo de dados, explore as ferramentas internas do OS X, como lsof e netstat .


1
Obrigado pela resposta. Tinha adivinhado este pode ser o caso, mas eu estava esperando que alguém já tinha a engenharia reversa do fluxo de tráfego, construiu uma ferramenta, etc.
Andrew Ferrier

1

Se você REALMENTE quiser ver o que está acontecendo, poderá usar o tcpdump (/ usr / sbin / tcpdump), que captura os pacotes. Ele mostra os pacotes à medida que passam pela rede. Não é o mais fácil, mas é a maneira mais abrangente de ver esses dados.


Alguma idéia de quais portas devem ser analisadas? Meu palpite é de pelo menos 80, 443, e 5223, para incluir e-mail, adicionar 25, 587, e 993.
Marnix A. van Ammers

1

A partir do OS X 10.11 (se não a 10.10), se você tiver qualquer subpasta do seu iCloud Drive aberta no Finder enquanto altera os arquivos no iCloud, e a barra de status dessa janela estiver ativada, o Finder informará quantos arquivos estão sendo sincronizados e quantos dados foram transferidos até o momento.


No OSX 10.13.6, não vejo essas informações na barra de status. Eu vejo um pequeno círculo próximo ao ícone do iCloud do localizador na barra lateral. Eu posso clicar nele para obter algumas informações sobre os dados que estão sendo transferidos.
Marnix A. van Ammers

Veja a captura de tela - a barra de status (⌘- / a ser exibida) na parte inferior da janela deve exibir o progresso da sincronização com o iCloud, desde que você esteja em qualquer janela do Finder que esteja dentro da hierarquia da pasta do iCloud Drive .
user1134918

Parece que as imagens não serão incorporadas nos comentários, mas consulte i.imgur.com/deKecx9.png
user1134918

0

Executar o seguinte no Terminal parece fazer o truque para mim:

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

O comando lsof resulta nisso:

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

basta emiti-lo novamente (seta para cima e pressionar retornar) e você verá que ele muda.


Onde você está executando este comando? Como é a saída?
Andrew Ferrier

Do terminal.
biffom

1
Você não precisa cd ~ / Imagens. não sabe por que a patrix editou isso?
biffom

Você está certo, interpretou mal sua intenção. OTOH, você pode editar sua resposta para adicionar conteúdo adicional, sem a necessidade de postar uma segunda.
nohillside
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.