3 pontos por GN⁺ 2023-09-24 | 1 comentários | Compartilhar no WhatsApp
  • Devido a conflitos ocultos de arquivos no iCloud Drive, parágrafos escritos recentemente ou alterações em código desapareceram, e a perda ocorreu antes que os backups fossem salvos
  • O conflito foi uma situação em que o sistema julgou haver versões diferentes do mesmo arquivo no Mac e no iPhone, mas o arquivo problemático nunca havia sido aberto no iPhone
  • O Dropbox mantém arquivos em conflito separadamente, mas o iCloud Drive não os expõe no sistema de arquivos, então o pop-up de escolha só aparece em editores com suporte a tratamento de conflitos
  • Em editores sem tratamento de conflitos, como Textifier, Xcode e Obsidian, o iCloud escolhe qual versão salvar, e com o tempo a versão correta pode ser sobrescrita no backup
  • É mais seguro manter dados importantes fora do iCloud Drive e monitorar alterações em arquivos essenciais com um repositório Git; também está em desenvolvimento o Cloud Cub para arquivos que precisam permanecer no iCloud

Conflitos ocultos de arquivos no iCloud Drive

  • Enquanto escrevia um documento, um parágrafo que eu havia acabado de digitar desapareceu; durante o desenvolvimento de um app, o Xcode passou a mostrar vários erros em um código que até então não tinha problemas
    • As alterações recentes em vários arquivos haviam sido apagadas
    • A perda aconteceu antes de o Time Machine ou o Backblaze salvarem os dados
  • A causa foi um conflito de arquivos detectado pelo iCloud Drive
    • O iCloud Drive concluiu que havia versões diferentes do mesmo arquivo no Mac e no iPhone e que não poderia mesclá-las automaticamente
    • Porém, os arquivos afetados nunca haviam sido abertos no iPhone
    • Como a pasta Documents do Mac havia sido movida para o iCloud, esses arquivos estavam no iCloud
  • Quando ocorre conflito de versão no Dropbox, ele salva junto um arquivo em conflito com um nome como “(John Doe’s conflicted copy)”
  • O iCloud Drive não mostra esse mesmo tipo de conflito no sistema de arquivos
    • Ao abrir o arquivo em um editor com suporte a tratamento de conflitos, aparece um pop-up perguntando qual versão deve ser mantida
    • Em editores sem tratamento de conflitos, como Textifier, Xcode e Obsidian, o iCloud decide qual versão será gravada no disco e no backup

Condições de recuperação e como responder

  • Com o passar do tempo, se um novo backup sobrescrever um backup anterior que continha a versão correta, o conteúdo pode ser perdido permanentemente
  • Para recuperar, é preciso abrir o arquivo em um editor com suporte à resolução de conflitos
    • O editor usado no exemplo foi o iA Writer
    • Depois que o arquivo é movido para fora do iCloud Drive, esse método também deixa de ajudar
    • Nos testes, ao mover de volta para o iCloud um arquivo que não havia sido alterado, o pop-up com as versões em conflito voltou a aparecer; porém, isso pode não acontecer se o arquivo tiver sido editado ou se o trabalho tiver continuado em uma cópia
  • Esconder conflitos de versão pode parecer uma abordagem amigável ao usuário, mas isso também pode fazer com que a perda de dados só seja descoberta anos depois, quando um documento importante for reaberto
  • Até que o iCloud Drive passe a expor conflitos de versão no sistema de arquivos ou em um local central de fácil acesso, é mais seguro mover dados importantes para fora do iCloud Drive
  • Está sendo criado o Cloud Cub para detectar e resolver conflitos ocultos de sincronização em arquivos que precisam permanecer no iCloud

1 comentários

 
GN⁺ 2023-09-24
Opiniões no Hacker News
  • Passei por algo parecido: a sincronização na nuvem estava ativada no Notes do iPhone da minha esposa e, achando que não seria necessária, eu a desativei. Então minha esposa perguntou: “Cadê todas as minhas notas? O que você fez?”
    Suei frio, mas lembrei que havia um iPad com o app Notes sincronizado, abri imediatamente e desliguei o WiFi para “preservar” as notas
    Liguei para a Apple, e a pessoa do suporte encontrou um jeito de impedir que elas fossem apagadas copiando e colando cada nota em uma nova pasta
    Foram algumas horas bem estressantes, e acho que a Apple deveria dar mais alertas ou pop-ups sobre o impacto total desse tipo de ação
    Além disso, descobri que o suporte técnico da Apple basicamente consegue acessar o celular como se fosse um “VNC”, ver o conteúdo e alterar configurações. Acho que eles pediram permissão e eu toquei em “aprovar”, mas eu nem sabia que esse recurso existia até ver na prática

    • Não estou tentando justificar esse problema, mas é surpreendente que um atendente da Apple tenha ajudado por telefone com um problema de sincronização do Notes e até feito a recuperação
      Ainda por cima, ajudou mesmo parecendo que a causa tinha sido um erro do próprio usuário. Minha empresa paga muito dinheiro por produtos do Google, mas é muito improvável que o Google ajude por telefone em algo assim
      No passado já falei com um atendente sobre coisas como controle de acesso, mas, se eu pedisse ajuda quando uma nota do Keep sumisse, acho que receberia uma resposta educada mandando eu me virar. Na prática, notas do Keep também somem de vez em quando
    • Se a situação for a que estou imaginando, bastaria reativar a sincronização e todas as notas teriam reaparecido
    • Pelo que me lembro, ao desativar a sincronização aparece uma pergunta do tipo “Deseja continuar? Todas as notas do iCloud serão removidas do iPhone”
      O problema da sua esposa parece ter sido mais com a pessoa que administrou o dispositivo iOS do que com a Apple
    • O fato de o suporte técnico da Apple conseguir entrar no celular como se fosse um “VNC”, ver o conteúdo e alterar configurações parece uma potencial vulnerabilidade de segurança. Fico curioso se há uma forma de desativar isso permanentemente
    • Gostaria de saber mais detalhes sobre esse recurso de “VNC”: se é exclusivo do iPad ou também funciona no iOS, se a solicitação de aprovação era um pop-up do sistema, se algum app com nome próprio foi aberto, se dava para ver na tela o que eles realmente estavam fazendo, e se isso já foi documentado em algum lugar
  • Concordo um milhão de vezes. Mas isso não parece ser um problema só do iCloud, e sim uma tendência fundamental do software da Apple como um todo
    Já passei por isso repetidamente ao destacar PDFs no Books. Às vezes, ao reabrir o PDF, várias páginas que eu tinha marcado recentemente desapareceram
    Durante o trabalho, parece que tudo está sendo salvo continuamente, mas, por algum motivo desconhecido, ele decide que a versão das 11:35, e não a das 11:45, é a versão principal mais recente
    O problema da Apple sobrescrever silenciosamente conteúdo novo com uma versão antiga já existe há pelo menos 10 anos
    Não entendo como uma falha crítica dessas entrou no sistema em primeiro lugar e como ainda não foi corrigida

    • Os dois problemas mais difíceis em software são invalidação de cache, nomear coisas, erros de um, e estouros de buffer causados pela ausência forçada de índices de array
    • Também já passei por várias coisas estranhas ao usar o software padrão do macOS para destacar ou fazer anotações, e o Skim foi uma alternativa bem boa
      É gratuito e tem licença BSD, mas é bom lembrar que, para ver as alterações em outros apps, é preciso exportar como PDF com as anotações incorporadas
      Para quem está cansado do fundo alaranjado da Apple que mata o contraste ou da falta de um marca-texto amarelo de verdade, vale experimentar. Não tenho relação com o projeto; só sou grato por ele existir
      https://skim-app.sourceforge.io/
    • Ponto interessante. Usei computadores da Apple de tempos em tempos e, mais recentemente, de 2015 até o começo deste ano; a ideia de que isso é um problema de filosofia parece fazer sentido
      Também me lembro de cortes bem implacáveis no hardware: disquetes, drives ópticos e até a arquitetura de CPU inteira, três vezes
      No iCloud, essa atitude parece se aplicar também aos arquivos. Não estou dizendo que tudo isso seja ruim, mas, conforme envelheço, isso se afasta cada vez mais do meu gosto
    • A maior parte da infraestrutura do iCloud é construída sobre instâncias do Cassandra. Há um bom artigo sobre isso, mas não consigo encontrá-lo agora
    • Se ele considerou a versão das 11:35 como a mais recente, será que o relógio de alguns servidores estava errado?
  • O autor sugere usar git, mas git não combina bem com o iCloud Drive
    Antigamente eu mantinha centenas de repositórios git no iCloud Drive e, quando fazia um commit grande, todo o iCloud Drive de centenas de GB acabava sendo sincronizado de novo com os servidores da Apple, o que levava um dia
    Tentei resolver isso escalando bastante o caso no suporte da Apple, mas nunca foi solucionado. Hoje deixo os repositórios git fora do iCloud Drive
    Parece que isso é disparado quando centenas de arquivos são alterados rapidamente e ao mesmo tempo antes de a última sincronização de uma grande mudança terminar

    • Eu achava que era quase senso comum não misturar um sistema de controle de versão como git com o controle de versão em nuvem de drives como iCloud, OneDrive e Google Drive
      Os dois não combinam, e especialmente quando vários dispositivos estão sincronizados com o mesmo drive na nuvem, há espaço para todo tipo de comportamento estranho e inesperado
    • Sou o autor do post original. Obrigado por compartilhar
      O problema é que um app que preciso usar não oferece outro método de sincronização, então alguns arquivos importantes precisam ficar no iCloud Drive
      Sem git, eu nem teria conseguido descobrir quais arquivos tinham mudado. Mesmo com git, não tenho certeza de ter detectado tudo. Acho que conflitos de sincronização do iCloud também podem alterar o conteúdo do git
    • Para começo de conversa, git também não combina bem com objetos binários grandes
    • Para pastas importantes do iCloud Drive, costumo usar um processo automático que faz rsync para algum outro lugar e, a partir dali, faz versionamento automático com Git ou Dropbox etc.
      Não é bom para dados muito grandes, mas a maioria das coisas que ficam no iCloud Drive e que eu quero versionar agressivamente é texto ou é pequena, então manter duas cópias quase não pesa
    • Para referência, por motivos parecidos, git também pode falhar de formas bem bizarras no Dropbox. Antigamente usei git-remote-dropbox tentando usar o Dropbox como se fosse um servidor git
      [1] https://github.com/anishathalye/git-remote-dropbox
  • Um motivo ainda maior para não usar o iCloud Drive é que a criptografia de ponta a ponta não é o padrão
    Tudo o que você armazena lá pode ser lido por administradores de sistemas da Apple, pessoal de suporte e pessoas que possam fazer exigências à Apple, como o governo dos EUA, que hoje consegue isso até sem mandado
    É melhor não usar serviços que não tenham criptografia de ponta a ponta
    Hoje o iCloud até tem criptografia de ponta a ponta opcional, mas ela vem desativada por padrão e fica enterrada nas configurações, então quase ninguém usa
    Eu uso o Syncthing para manter arquivos em todos os meus dispositivos. Tem criptografia de ponta a ponta, é software livre e também lida com conflitos e backup de versões de forma razoável
    Ele também oferece suporte a dispositivos não confiáveis usados só para sincronização, que nunca veem o texto em claro, então dá para manter um nó com segurança em uma VPS ou em outro local externo

    • Dizer “não use serviços que não tenham criptografia de ponta a ponta” e ao mesmo tempo “o iCloud também tem criptografia de ponta a ponta opcional” é contraditório. O iCloud também tem criptografia de ponta a ponta
      É fácil convencer amigos ou familiares a tocar duas vezes no menu para ativá-la, mas não é fácil convencê-los a instalar e configurar o Syncthing em vários dispositivos
      Tudo bem defender o Syncthing, mas é meio ridículo dizer que o iCloud Drive é ruim porque ele não ativa por padrão uma configuração em que o usuário médio pode perder todos os dados se perder a chave
      Garanto que uma avó preferiria muito mais ligar para a Apple quando esquecesse a senha e recuperar as fotos do pequeno Johnny do que ter algo mais seguro por padrão
    • Também há uma objeção prática à criptografia de ponta a ponta. Para a imensa maioria das pessoas, a chance de perder todos os dados por esquecer ou perder a chave de criptografia é muito maior do que a de ter dados vazados para administradores ou para o governo
      Eu também gostaria de ativar a criptografia de ponta a ponta, mas não confio em mim mesmo o suficiente para não perder a chave
    • Não sei qual é a diferença entre ativar manualmente a criptografia de ponta a ponta no iCloud e procurar por conta própria um provedor que ofereça criptografia de ponta a ponta por padrão
      Não é uma situação como em mensagens, em que a outra pessoa também precisa ativar a criptografia de ponta a ponta
    • Parece obviamente mais fácil apertar um botão no iCloud para ativar a criptografia de ponta a ponta do que trocar o provedor de armazenamento em nuvem inteiro
    • É possível ativar a criptografia de ponta a ponta pela Proteção Avançada de Dados nas configurações da conta do iCloud
      https://support.apple.com/en-ca/HT212520
  • Também fiquei bem irritado com isso. Eu deixava minha biblioteca do Calibre na pasta Documents. Onde mais eu a colocaria, ainda mais com backup gratuito incluído
    Mas, um tempo atrás, percebi que algumas pastas de livros dentro da biblioteca, que deveriam conter os arquivos epub reais, estavam vazias
    A estrutura de diretórios e as entradas do banco de dados estavam lá, mas os arquivos dos livros tinham sumido. Não todos; algo como 40%, de forma aleatória
    A conclusão é: não armazene no iCloud Drive nada de que você goste, especialmente livros

    • Uma dica meio de brincadeira, mas provavelmente dá para consegui-los de novo no Libgen
  • Sobre a parte “ao abrir um arquivo em um editor com suporte a tratamento de conflitos, aparece um pop-up perguntando qual versão manter. Editores sem tratamento de conflitos, como Textifier, Xcode e Obsidian, deixam o iCloud decidir qual versão salvar no disco e no backup”, acho que parte da responsabilidade também é dos desenvolvedores de apps que adicionaram suporte ao iCloud sem incluir um mecanismo de tratamento de conflitos
    Mas por que o Xcode, que é um app da própria Apple, não oferece suporte a tratamento de conflitos? O software da Apple deveria definir o padrão para desenvolvedores terceiros
    Se a própria Apple não trata conflitos de versão, é claro que outros desenvolvedores também não vão tratar

    • Sou o autor do texto original. Acho que escrevi de um jeito um pouco ambíguo. O ponto central é que isso não depende do editor
      Você pode perder conteúdo mesmo usando um editor com suporte a tratamento de conflitos
      Se você escrever algo, salvar, fechar o editor e não abrir o arquivo de novo, o iCloud pode substituir o conteúdo desse arquivo e o usuário não tem como saber
      A única forma de não perder dados é criar um repositório Git ou abrir regularmente todos os arquivos importantes em um editor com suporte a tratamento de conflitos
    • O fato de um app não ter implementado um recurso não significa que a API do sistema possa apagar silenciosamente dados importantes
      Isso não é um bug do Xcode, é um bug do iCloud
  • Se você coloca arquivos no iCloud Drive, o iPhone pode remover a cópia local a qualquer momento
    Se quiser sincronizar um arquivo e ainda ter certeza de que há 100% uma cópia local, é preciso manter o mesmo arquivo tanto no iCloud Drive quanto na pasta “No Meu iPhone”
    É por isso que o Apple Books, o Numbers e todos os apps que usam o iCloud Drive continuam removendo cópias locais
    Criei um app simples de notas que usava o iCloud Drive e, quando eu fechava o app, o iCloud removia avidamente até arquivos txt de 2 KB. Às vezes ele não apagava, então era bem aleatório
    Não importa se ainda há muito espaço de armazenamento disponível; o iCloud também pode remover versões locais de arquivos que você usa o tempo todo
    O suporte da Apple para desenvolvedores disse que não havia nada a fazer. Nem para o desenvolvedor existe uma forma de marcar um arquivo para nunca ser removido
    Na documentação oficial, a Apple de fato recomenda manter todos os arquivos do usuário no iCloud Drive e não deixar cópias em “No Meu iPhone”

  • Tive um problema parecido com o desaparecimento de contatos. Aconteceu por um tempo, mas no começo achei que fosse erro meu
    Uma manhã, vi que o contato de um amigo com quem eu tinha trocado mensagens na noite anterior havia sumido e percebi que o problema era o iCloud
    Entrei em contato com o suporte da Apple e, depois de passar por todas as orientações básicas, o atendente admitiu que era um problema conhecido, mas que eles não tinham encontrado a causa raiz nem tinham solução
    Pediram que eu monitorasse os contatos para saber quando a exclusão acontecia, mas disseram que eu precisava informar uma janela de poucos minutos
    O motivo era que “o iPhone gera muitos logs, então, se não for possível apontar exatamente quando aconteceu, os engenheiros não conseguem analisar”
    Achei que reduzir o bug a uma janela de 8 horas já era bom o suficiente, mas o atendente disse que os engenheiros haviam pedido precisão de poucos minutos
    No fim, como sempre acontece quando passo um problema difícil para o suporte da Apple, o atendente disse que entraria em contato depois, mas nunca ligou de volta, e nada aconteceu
    Migrei os contatos para o Google e simplesmente esqueci o assunto

  • Analisei esse problema. A Apple, para não incomodar demais os usuários com conflitos, escolheu uma estratégia de sincronização que perde dados do usuário sob certas condições
    Ela decidiu não usar técnicas muito mais antigas que poderiam ter preservado as revisões em conflito
    O resumo está aqui
    https://www.youtube.com/watch?v=q8k1q6kf1W0

    • Para não atrapalhar o usuário, ela poderia ter colocado os arquivos duplicados em algum lugar como uma pasta de conflitos
      Assim, as pessoas poderiam pesquisar “o que a Apple fez com meus arquivos?” e encontrar uma forma de recuperá-los
      Falando em não atrapalhar, em alguma atualização o iOS alterou silenciosamente minhas configurações de chamadas, fazendo com que o telefone não tocasse para alguns chamadores
      Era uma daquelas funcionalidades bobas de deixar a mente mais tranquila, mas, por causa das particularidades do NHS, perdi uma ligação de um cirurgião oncológico que seria difícil de retornar, o que me deixou muito ansioso
  • No meu caso, às vezes o iCloud Drive simplesmente não sincroniza e fica travado em alguma coisa. Dá para ver o status de sincronização no ícone do iCloud Drive no Finder
    Fechar todos os apps no macOS e no iOS e executar killall bird às vezes resolve. bird é o serviço de sincronização do iCloud