3 points par GN⁺ 2023-09-24 | 1 commentaires | Partager sur WhatsApp
  • À cause de conflits de fichiers cachés dans iCloud Drive, des paragraphes récemment écrits ou des modifications de code ont disparu, avec une perte survenue avant l’enregistrement des sauvegardes
  • Le conflit correspondait à une situation où le système estimait qu’il existait des versions différentes d’un même fichier sur Mac et iPhone, mais les fichiers concernés n’avaient jamais été ouverts sur iPhone
  • Dropbox conserve séparément les fichiers en conflit, mais iCloud Drive ne les expose pas dans le système de fichiers, si bien que seule une fenêtre de choix apparaît dans les éditeurs qui prennent en charge la résolution de conflits
  • Dans des éditeurs comme Textifier, Xcode ou Obsidian, qui ne gèrent pas les conflits, iCloud choisit la version à enregistrer, et avec le temps la bonne version peut être écrasée dans les sauvegardes
  • Il est plus sûr de conserver les données importantes hors d’iCloud Drive et de surveiller les modifications des fichiers essentiels avec un dépôt Git ; Cloud Cub est aussi en cours de développement pour les fichiers qui doivent rester sur iCloud

Conflits de fichiers cachés dans iCloud Drive

  • Pendant la rédaction d’un document, un paragraphe tout juste saisi a disparu, et lors du développement d’une app, Xcode a commencé à afficher plusieurs erreurs dans un code qui ne posait aucun problème jusque-là
    • Les modifications récentes de plusieurs fichiers avaient été effacées
    • La perte est survenue avant que Time Machine ou Backblaze n’enregistre une sauvegarde
  • La cause était un conflit de fichiers détecté par iCloud Drive
    • iCloud Drive a jugé qu’il existait des versions différentes d’un même fichier sur Mac et iPhone et qu’une fusion automatique était impossible
    • Pourtant, les fichiers affectés n’avaient jamais été ouverts sur iPhone
    • Comme le dossier Documents du Mac avait été déplacé vers iCloud, ces fichiers s’y trouvaient
  • En cas de conflit de versions, Dropbox enregistre un fichier de conflit séparé avec un nom du type « (John Doe’s conflicted copy) »
  • iCloud Drive, lui, n’affiche pas ces conflits dans le système de fichiers
    • Si l’on ouvre le fichier dans un éditeur qui prend en charge la gestion des conflits, une fenêtre demande quelle version conserver
    • Dans des éditeurs comme Textifier, Xcode ou Obsidian, qui ne gèrent pas les conflits, c’est iCloud qui décide quelle version sera conservée sur le disque et dans les sauvegardes

Conditions de récupération et réponses possibles

  • Avec le temps, si une nouvelle sauvegarde écrase une ancienne sauvegarde qui contenait la bonne version, le contenu peut être perdu définitivement
  • Pour récupérer le fichier, il faut l’ouvrir avec un éditeur prenant en charge la résolution des conflits
    • L’éditeur utilisé dans l’exemple est iA Writer
    • Une fois le fichier déplacé hors d’iCloud Drive, cette méthode n’aide plus
    • Lors des tests, le fait de remettre dans iCloud un fichier non modifié faisait réapparaître la fenêtre des versions en conflit, mais cela peut ne pas fonctionner si le fichier a été modifié ou si l’on a continué à travailler sur une copie
  • Le fait de masquer les conflits de versions peut sembler plus convivial, mais on peut ne découvrir la perte de données que des années plus tard, lors de la réouverture d’un document important
  • Tant qu’iCloud Drive n’exposera pas les conflits de versions dans le système de fichiers ou dans un emplacement central facile d’accès, il est plus sûr de déplacer les données importantes hors d’iCloud Drive
  • Un outil appelé Cloud Cub est en cours de création pour détecter et résoudre les conflits de synchronisation cachés pour les fichiers qui doivent rester dans iCloud Drive

1 commentaires

 
GN⁺ 2023-09-24
Avis de Hacker News
  • J’ai vécu quelque chose de similaire : la synchronisation cloud était activée dans Notes sur l’iPhone de ma femme, et comme je pensais que ce n’était pas nécessaire, je l’ai désactivée. Ma femme m’a alors dit : « Où sont passées toutes mes notes ? Qu’est-ce que tu as fait ? »
    J’ai eu des sueurs froides, mais je me suis souvenu qu’il y avait un iPad avec l’app Notes synchronisée ; je l’ai ouvert immédiatement et j’ai coupé le WiFi pour « préserver » les notes
    J’ai appelé Apple, et le conseiller du support a trouvé une méthode consistant à copier-coller chaque note dans un nouveau dossier pour éviter qu’elle ne soit supprimée
    Ça a été assez stressant pendant plusieurs heures, et je pense qu’Apple aurait dû afficher davantage d’avertissements ou de pop-ups sur toutes les conséquences de ce genre d’action
    Au passage, j’ai aussi appris que le support technique d’Apple peut en pratique accéder au téléphone « façon VNC », voir ce qu’il y a à l’écran et modifier des réglages. Je crois qu’il y a eu une demande d’autorisation et que j’ai appuyé sur « Accepter », mais je ne savais même pas qu’une telle fonction existait avant de la voir en action

    • Je ne cherche pas à excuser ce problème, mais je trouve étonnant qu’un employé d’Apple ait aidé par téléphone sur un problème de synchronisation de Notes et soit allé jusqu’à la récupération
      Et ce alors même que la cause semblait être une erreur de l’utilisateur. Mon entreprise paie très cher des produits Google, mais il est très peu probable que Google aide par téléphone pour ce genre de chose
      Par le passé, il m’est arrivé de parler à un interlocuteur pour des sujets comme le contrôle d’accès, mais si je demandais de l’aide parce que des notes Keep ont disparu, j’imagine qu’on me répondrait poliment d’aller me faire voir. En pratique, les notes Keep disparaissent aussi de temps en temps
    • Si la situation est bien celle à laquelle je pense, il aurait probablement suffi de réactiver la synchronisation pour que toutes les notes réapparaissent
    • De mémoire, quand on désactive la synchronisation, une question du type « Voulez-vous continuer ? Toutes les notes iCloud seront supprimées de l’iPhone » apparaît
      Le problème de votre femme semblait plutôt venir de la personne qui gérait l’appareil iOS que d’Apple
    • Le fait que le support technique d’Apple puisse entrer dans le téléphone « façon VNC », voir le contenu et modifier des réglages ressemble à une faille de sécurité potentielle. Je me demande s’il existe un moyen de désactiver définitivement cela
    • J’aimerais en savoir plus sur cette fonction « VNC » : est-ce réservé à l’iPad ou est-ce aussi disponible sur iOS, la demande d’autorisation était-elle une pop-up système, une application nommée s’est-elle ouverte, voyait-on réellement ce qui était fait à l’écran, et est-ce documenté quelque part ?
  • Je suis vraiment d’accord un million de fois. Mais ce n’est pas seulement un problème d’iCloud : cela ressemble à une tendance fondamentale de l’ensemble des logiciels Apple
    Je le constate aussi régulièrement quand je surligne des PDF dans Books. Parfois, quand je rouvre un PDF, plusieurs pages récemment surlignées ont disparu
    Pendant que je travaille, tout semble être enregistré en continu, mais pour une raison inconnue, le système considère la version de 11 h 35 comme la dernière version principale, et non celle de 11 h 45
    Le problème d’Apple qui écrase silencieusement du nouveau contenu avec une ancienne version dure depuis au moins dix ans
    Je ne comprends pas comment un défaut critique pareil a pu entrer dans le système au départ, ni pourquoi il n’est toujours pas corrigé

    • Les deux problèmes les plus difficiles en logiciel sont l’invalidation de cache, le nommage, les erreurs de décalage d’un cran, et les dépassements de tampon dus à l’absence forcée d’indices de tableau
    • J’ai aussi vu pas mal de comportements étranges en surlignant ou en annotant avec les logiciels par défaut de macOS, et Skim a été une très bonne alternative
      C’est gratuit et sous licence BSD, mais il faut garder en tête qu’il faut exporter en PDF annoté si l’on veut voir les changements dans d’autres apps
      Si vous êtes fatigué par le fond orangé d’Apple qui tue le contraste, ou par l’absence d’un vrai surligneur jaune, ça vaut le coup d’essayer. Je n’y suis pas lié, je suis juste content que ça existe
      https://skim-app.sourceforge.io/
    • Point intéressant. J’ai utilisé des ordinateurs Apple par intermittence, et plus récemment de 2015 jusqu’au début de cette année ; l’idée que ce soit un problème de philosophie me paraît assez juste
      Côté matériel aussi, je me souviens qu’ils ont coupé assez brutalement le cordon avec les disquettes, les lecteurs optiques, et même trois fois avec des architectures CPU entières
      Avec iCloud, on dirait que cette attitude s’applique aussi aux fichiers. Je ne dirais pas que tout est mauvais, mais plus je vieillis, plus cela s’éloigne de mes goûts
    • La majeure partie de l’infrastructure iCloud est construite sur des instances Cassandra. Il existe un bon article à ce sujet, mais je n’arrive pas à le retrouver pour l’instant
    • S’il a considéré la version de 11 h 35 comme la plus récente, est-ce que l’horloge de certains serveurs était déréglée ?
  • L’auteur suggère d’utiliser git, mais git ne fonctionne pas bien avec iCloud Drive
    J’avais autrefois des centaines de dépôts git dans iCloud Drive, et quand je faisais un gros commit, tout mon iCloud Drive de plusieurs centaines de Go se resynchronisait avec les serveurs d’Apple, ce qui prenait une journée
    J’ai essayé de résoudre le problème en le faisant remonter assez haut auprès du support Apple, mais ça n’a jamais été réglé. Aujourd’hui, je garde mes dépôts git en dehors d’iCloud Drive
    Ce phénomène semble se déclencher quand on modifie rapidement et simultanément des centaines de fichiers avant que la dernière grosse synchronisation de changements ne soit terminée

    • Je pensais que c’était presque du bon sens de ne pas mélanger un système de gestion de versions comme git avec la gestion de versions cloud de lecteurs cloud comme iCloud, OneDrive ou Google Drive
      Les deux ne vont pas bien ensemble, et surtout si plusieurs appareils sont synchronisés avec le même lecteur cloud, cela laisse la porte ouverte à toutes sortes de comportements bizarres et inattendus
    • Je suis l’auteur du billet original. Merci pour le partage
      Le problème, c’est qu’une application que je dois absolument utiliser ne prend en charge aucune autre méthode de synchronisation ; je dois donc utiliser iCloud Drive pour une partie de mes fichiers importants
      Sans git, je n’aurais même pas pu savoir quels fichiers avaient changé. Même avec git, je ne peux pas être certain d’avoir tout détecté. J’imagine que des conflits de synchronisation iCloud pourraient aussi modifier le contenu de git
    • De toute façon, git ne fonctionne pas très bien avec les gros objets binaires
    • Pour les dossiers iCloud Drive importants, j’utilise surtout un processus automatique qui les rsync quelque part, puis qui fait de la gestion de versions automatique de ce côté-là avec Git, Dropbox, etc.
      Ce n’est pas idéal pour de très grosses données, mais ce que je veux conserver dans iCloud Drive tout en versionnant agressivement est généralement du texte ou de petits fichiers, donc conserver deux copies ne coûte presque rien
    • Pour information, git peut aussi échouer de manière assez étrange avec Dropbox pour des raisons similaires. J’ai autrefois utilisé git-remote-dropbox en essayant d’utiliser Dropbox comme serveur git
      [1] https://github.com/anishathalye/git-remote-dropbox
  • Une raison encore plus importante de ne pas utiliser iCloud Drive est que le chiffrement de bout en bout n’est pas activé par défaut.
    Tout ce que vous y stockez peut être lu par les administrateurs système d’Apple, le support, et ceux qui peuvent l’exiger d’Apple, par exemple le gouvernement américain, qui peut désormais le faire même sans mandat.
    Mieux vaut ne pas utiliser de service qui n’est pas chiffré de bout en bout.
    Il existe bien aujourd’hui un chiffrement de bout en bout optionnel dans iCloud, mais il est désactivé par défaut et enfoui profondément dans les réglages, si bien que presque personne ne l’utilise.
    J’utilise Syncthing pour conserver mes fichiers sur tous mes appareils. C’est chiffré de bout en bout, c’est un logiciel libre, et la gestion des conflits comme les sauvegardes de versions sont raisonnables.
    Il prend aussi en charge des appareils dédiés uniquement à la synchronisation, non fiables, qui ne voient jamais les données en clair, ce qui permet de placer en toute sécurité un nœud sur un VPS ou dans un lieu externe.

    • Dire « n’utilisez pas de service qui n’est pas chiffré de bout en bout » tout en disant « iCloud propose aussi un chiffrement de bout en bout optionnel », c’est contradictoire. iCloud peut aussi être chiffré de bout en bout.
      Il est facile de convaincre des amis ou de la famille d’appuyer deux fois dans un menu pour l’activer, mais il n’est pas facile de les convaincre d’installer et de configurer Syncthing sur plusieurs appareils.
      Défendre Syncthing, très bien, mais dire qu’iCloud Drive est mauvais parce qu’il n’active pas par défaut un réglage qui peut faire perdre toutes ses données à l’utilisateur moyen s’il perd ses clés, c’est un peu risible.
      Je peux garantir que votre grand-mère préférera largement pouvoir appeler Apple pour récupérer les photos du petit Johnny si elle oublie son mot de passe, plutôt qu’un système plus sûr par défaut.
    • Il existe aussi une objection pragmatique au chiffrement de bout en bout. Pour la grande majorité des gens, le risque de perdre toutes leurs données parce qu’ils ont oublié ou perdu leur clé de chiffrement est bien plus élevé que celui de voir leurs données divulguées à des administrateurs ou à un gouvernement.
      Moi aussi, j’aimerais activer le chiffrement de bout en bout, mais je ne me fais pas assez confiance pour ne pas perdre la clé.
    • Je ne vois pas en quoi activer manuellement le chiffrement de bout en bout d’iCloud est différent du fait de chercher soi-même un fournisseur qui le prend en charge par défaut.
      Ce n’est pas non plus une situation comme la messagerie, où l’autre personne doit elle aussi activer le chiffrement de bout en bout.
    • Activer le chiffrement de bout en bout dans iCloud en appuyant sur un bouton semble évidemment plus simple que de changer complètement de fournisseur de stockage cloud.
    • On peut activer le chiffrement de bout en bout via la protection avancée des données dans les réglages du compte iCloud.
      https://support.apple.com/en-ca/HT212520
  • Moi aussi, ça m’a passablement énervé. J’avais placé ma bibliothèque Calibre dans le dossier Documents. Où la mettre ailleurs, puisqu’en plus une sauvegarde gratuite est incluse ?
    Mais il y a quelque temps, j’ai découvert que certains dossiers de livres dans la bibliothèque, qui auraient dû contenir les fichiers epub eux-mêmes, étaient vides.
    La structure de répertoires et les entrées de la base de données étaient là, mais les fichiers des livres avaient disparu. Pas tous : environ 40 %, au hasard.
    Conclusion : ne stockez pas ce que vous aimez dans iCloud Drive, surtout pas des livres.

    • Petite astuce en plaisantant : vous pourrez probablement les retrouver sur Libgen.
  • À propos du passage : « Si vous ouvrez un fichier dans un éditeur qui prend en charge la gestion des conflits, une fenêtre s’affiche pour vous demander quelle version conserver. Les éditeurs sans gestion des conflits, comme Textifier, Xcode ou Obsidian, laissent iCloud décider quelle version stocker sur le disque et dans la sauvegarde », je pense qu’une partie de la responsabilité revient aussi aux développeurs d’apps qui ont ajouté la prise en charge d’iCloud sans ajouter de mécanisme de gestion des conflits.
    Mais pourquoi Xcode, une app d’Apple elle-même, ne prend-elle pas en charge la gestion des conflits ? Les logiciels Apple devraient fixer le standard pour les développeurs tiers.
    Si Apple ne gère pas les conflits de versions, les autres développeurs ne le feront évidemment pas non plus.

    • Je suis l’auteur du billet original. Je pense avoir écrit cela d’une façon un peu trompeuse. Le point essentiel est que c’est indépendant de l’éditeur.
      Même en utilisant un éditeur qui prend en charge la gestion des conflits, on peut perdre du contenu.
      Si l’on suppose que vous écrivez quelque chose, que vous l’enregistrez, puis que vous fermez l’éditeur sans le rouvrir, iCloud peut remplacer le contenu de ce fichier et vous n’avez aucun moyen de le savoir.
      La seule façon de ne pas perdre de données est de créer un dépôt Git, ou d’ouvrir régulièrement tous les fichiers importants dans un éditeur qui prend en charge la gestion des conflits.
    • Le fait qu’une app n’ait pas implémenté une fonctionnalité ne devrait pas autoriser une API système à supprimer silencieusement des données importantes.
      Ce n’est pas un bug de Xcode, c’est un bug d’iCloud.
  • Si vous placez des fichiers dans iCloud Drive, l’iPhone peut supprimer à tout moment la copie locale.
    Si vous voulez synchroniser des fichiers tout en étant certain à 100 % de disposer d’une copie locale, il faut placer les mêmes fichiers à la fois dans iCloud Drive et dans le dossier « Sur mon iPhone ».
    C’est pour cela qu’Apple Books, Numbers et toutes les apps qui utilisent iCloud Drive continuent de supprimer les copies locales.
    J’ai créé une simple app de notes utilisant iCloud Drive, et dès que je fermais l’app, iCloud supprimait avidement même un fichier txt de 2 Ko. Parfois, il ne le supprimait pas, donc c’était assez aléatoire.
    Peu importe qu’il reste beaucoup d’espace de stockage, iCloud peut aussi supprimer la version locale de fichiers que vous utilisez constamment.
    Le support développeur d’Apple a dit qu’il ne pouvait rien faire. Les développeurs n’ont même pas de moyen de marquer un fichier comme ne devant jamais être supprimé.
    Dans sa documentation officielle, Apple recommande effectivement de conserver tous les fichiers de l’utilisateur dans iCloud Drive et de ne pas garder de copies dans « Sur mon iPhone ».

  • J’ai rencontré un problème similaire avec la disparition de contacts. Cela s’est produit pendant un certain temps, mais au début je pensais que c’était de ma faute.
    Un matin, en constatant que le contact d’un ami à qui j’avais envoyé des messages la veille au soir avait disparu, j’ai compris que le problème venait d’iCloud.
    J’ai contacté le support Apple et, après avoir suivi toutes les recommandations de base, l’interlocuteur a reconnu qu’il s’agissait d’un problème connu, mais qu’ils n’avaient pas identifié la cause profonde et n’avaient pas de solution.
    Il m’a demandé de surveiller mes contacts pour savoir quand les suppressions se produisaient, mais il fallait leur donner une fenêtre de quelques minutes.
    La raison était que « l’iPhone génère beaucoup de logs, donc si vous ne pouvez pas dire exactement quand cela s’est produit, les ingénieurs ne peuvent pas les examiner ».
    Je trouvais déjà plutôt correct d’avoir réduit le bug à une fenêtre de 8 heures, mais l’interlocuteur m’a dit que les ingénieurs demandaient une précision à quelques minutes près.
    Au final, comme chaque fois que je confie un problème difficile au support Apple, l’interlocuteur a dit qu’il me recontacterait, mais il ne m’a jamais rappelé et rien ne s’est passé.
    J’ai déplacé mes contacts vers Google et j’ai simplement oublié l’affaire.

  • Je me suis penché sur ce problème. Apple, pour éviter d’ennuyer excessivement les utilisateurs avec des conflits, a choisi, dans certaines conditions, une stratégie de synchronisation qui fait perdre des données utilisateur
    Ils ont décidé de ne pas utiliser des techniques bien plus anciennes qui auraient permis de conserver les révisions en conflit
    Le résumé est ici
    https://www.youtube.com/watch?v=q8k1q6kf1W0

    • Pour éviter de déranger l’utilisateur, ils auraient pu mettre les fichiers dupliqués quelque part, par exemple dans un dossier de conflits
      Les gens auraient alors pu chercher « qu’est-ce qu’Apple a fait à mes fichiers ? » et trouver comment les récupérer
      Puisqu’on parle de ne pas déranger, iOS a discrètement modifié mes réglages d’appels lors d’une mise à jour, empêchant le téléphone de sonner pour certains appelants
      C’était une sorte de fonctionnalité bidon censée apaiser l’esprit, mais à cause du fonctionnement du NHS il est difficile de rappeler, et j’ai manqué l’appel d’un chirurgien oncologue, ce qui m’a causé une grosse angoisse
  • Dans mon cas, iCloud Drive, parfois, ne se synchronise tout simplement pas et reste bloqué sur quelque chose. On peut voir l’état de synchronisation via l’icône iCloud Drive dans le Finder
    Fermer toutes les apps sur macOS et iOS puis exécuter killall bird résout parfois le problème. bird est le service de synchronisation iCloud