3 Punkte von GN⁺ 2023-09-24 | 1 Kommentare | Auf WhatsApp teilen
  • Wegen versteckter Dateikonflikte in iCloud Drive verschwanden kürzlich geschriebene Absätze oder Codeänderungen; der Verlust trat ein, bevor Backups gespeichert wurden
  • Der Konflikt entstand in einer Situation, in der angenommen wurde, dass auf Mac und iPhone unterschiedliche Versionen derselben Datei vorhanden seien; die betroffene Datei war jedoch nie auf dem iPhone geöffnet worden
  • Dropbox legt Konfliktdateien separat ab, iCloud Drive macht sie jedoch im Dateisystem nicht sichtbar, sodass ein Auswahl-Popup nur in Editoren mit Konfliktbehandlung erscheint
  • In Editoren ohne Konfliktbehandlung wie Textifier, Xcode oder Obsidian wählt iCloud die zu speichernde Version aus; mit der Zeit kann die richtige Version durch Backups überschrieben werden
  • Wichtige Daten sollten besser außerhalb von iCloud Drive liegen, und Kern-Dateien lassen sich sicherer über ein Git-Repository auf Änderungen überwachen; für Dateien, die in iCloud bleiben müssen, ist außerdem Cloud Cub in Entwicklung

Versteckte Dateikonflikte in iCloud Drive

  • Beim Schreiben eines Dokuments verschwand ein gerade eingegebener Absatz, und während der App-Entwicklung zeigte Xcode mehrere Fehler in Code an, der zuvor problemlos funktioniert hatte
    • Die jüngsten Änderungen an mehreren Dateien waren gelöscht
    • Der Verlust trat ein, bevor Time Machine oder Backblaze sie sichern konnten
  • Ursache war ein von iCloud Drive erkannter Dateikonflikt
    • iCloud Drive ging davon aus, dass auf Mac und iPhone unterschiedliche Versionen derselben Datei vorlagen und diese nicht automatisch zusammengeführt werden konnten
    • Die betroffenen Dateien waren jedoch nie auf dem iPhone geöffnet worden
    • Da der Documents-Ordner des Macs nach iCloud verschoben worden war, lagen diese Dateien in iCloud
  • Dropbox speichert bei Versionskonflikten zusätzlich eine Konfliktdatei mit einem Namen wie „(John Doe’s conflicted copy)“
  • iCloud Drive zeigt denselben Konflikt nicht im Dateisystem an
    • Öffnet man die Datei in einem Editor, der Konfliktbehandlung unterstützt, erscheint ein Popup, das fragt, welche Version beibehalten werden soll
    • In Editoren ohne Konfliktbehandlung wie Textifier, Xcode oder Obsidian entscheidet iCloud, welche Version auf der Festplatte und in Backups gespeichert wird

Wiederherstellungsbedingungen und Gegenmaßnahmen

  • Wenn mit der Zeit neue Backups frühere Backups überschreiben, in denen noch die richtige Version enthalten war, können Inhalte dauerhaft verloren gehen
  • Für die Wiederherstellung muss die betroffene Datei mit einem Editor geöffnet werden, der Konfliktlösung unterstützt
    • Der im Beispiel verwendete Editor ist iA Writer
    • Nachdem die Datei aus iCloud Drive heraus verschoben wurde, hilft auch diese Methode nicht mehr
    • In Tests erschien das Popup mit den Konfliktversionen erneut, wenn eine unveränderte Datei wieder nach iCloud verschoben wurde; wenn die Datei jedoch bearbeitet wurde oder man mit einer Kopie weitergearbeitet hat, muss das nicht der Fall sein
  • Die Methode, Versionskonflikte zu verbergen, mag nutzerfreundlich wirken, doch möglicherweise bemerkt man den Datenverlust erst, wenn man wichtige Dokumente Jahre später wieder öffnet
  • Bis iCloud Drive Versionskonflikte im Dateisystem oder an einer leicht zugänglichen zentralen Stelle offenlegt, ist es sicherer, wichtige Daten aus iCloud Drive herauszunehmen
  • Für Dateien, die in iCloud Drive bleiben müssen, wird Cloud Cub entwickelt, um versteckte Synchronisierungskonflikte zu erkennen und zu beheben

1 Kommentare

 
GN⁺ 2023-09-24
Hacker-News-Kommentare
  • Ich habe etwas Ähnliches erlebt: Auf dem iPhone meiner Frau war in Notes die Cloud-Synchronisierung aktiviert, und als ich sie ausgeschaltet habe, weil ich dachte, sie sei nicht nötig, sagte meine Frau: „Wo sind all meine Notizen hin? Was hast du gemacht?“
    Mir brach der kalte Schweiß aus, aber dann fiel mir ein iPad mit synchronisierter Notes-App ein. Ich öffnete sie sofort und schaltete das WLAN aus, um die Notizen zu „bewahren“.
    Ich rief bei Apple an, und der Support-Mitarbeiter fand eine Methode: Jede Notiz in einen neuen Ordner kopieren und einfügen, damit sie nicht gelöscht wird.
    Das waren ein paar ziemlich stressige Stunden, und ich finde, Apple hätte mehr Warnungen oder Pop-ups zu den vollständigen Auswirkungen solcher Aktionen anzeigen müssen.
    Nebenbei erfuhr ich auch, dass der Apple-Support sich praktisch wie per „VNC“ auf ein Telefon schalten, den Inhalt ansehen und Einstellungen ändern kann. Ich glaube, es gab eine Berechtigungsanfrage und ich habe auf „Genehmigen“ getippt, aber bis ich es tatsächlich sah, wusste ich nicht einmal, dass es so eine Funktion gibt.

    • Ich will dieses Problem nicht entschuldigen, aber es überrascht mich, dass ein Apple-Mitarbeiter telefonisch bei einem Problem mit der Notes-Synchronisierung geholfen und sogar bei der Wiederherstellung unterstützt hat.
      Und das, obwohl die Ursache nach einem eigenen Fehler aussah. Unser Unternehmen zahlt viel Geld für Google-Produkte, aber Google würde bei so etwas am Telefon mit ziemlicher Sicherheit nicht helfen.
      Bei Dingen wie Zugriffskontrolle habe ich früher schon einmal mit einem Ansprechpartner telefoniert, aber wenn ich um Hilfe bitten würde, weil Keep-Notizen verschwunden sind, bekäme ich wohl höflich gesagt, ich solle mich verziehen. Tatsächlich verschwinden Keep-Notizen auch gelegentlich.
    • Wenn es die Situation ist, an die ich denke, wären vermutlich alle Notizen einfach wieder aufgetaucht, wenn man die Synchronisierung wieder eingeschaltet hätte.
    • Soweit ich mich erinnere, erscheint beim Ausschalten der Synchronisierung die Frage: „Möchten Sie fortfahren? Alle iCloud-Notizen werden vom iPhone entfernt.“
      Das Problem deiner Frau lag wohl eher bei der Person, die das iOS-Gerät verwaltet hat, als bei Apple.
    • Dass der Apple-Support wie per „VNC“ auf ein Telefon zugreifen, Inhalte ansehen und Einstellungen ändern kann, wirkt wie eine potenzielle Sicherheitslücke. Ich frage mich, ob es eine Möglichkeit gibt, das dauerhaft zu deaktivieren.
    • Ich würde gern mehr über diese „VNC“-Funktion wissen. Ob sie nur fürs iPad gilt oder auch für iOS, ob die Zustimmung über ein System-Pop-up kam, ob eine benannte App geöffnet wurde, ob man auf dem Bildschirm sehen konnte, was tatsächlich passiert, und ob das irgendwo dokumentiert ist.
  • Dem stimme ich wirklich millionenfach zu. Aber das ist nicht nur ein iCloud-Problem, sondern wirkt wie eine grundlegende Tendenz in Apples Software insgesamt.
    Das erlebe ich wiederholt auch beim Markieren von PDFs in Books. Manchmal öffne ich ein PDF erneut und mehrere zuletzt markierte Seiten sind verschwunden.
    Während der Arbeit scheint ständig gespeichert zu werden, aber aus unbekanntem Grund wird die Version von 11:35 statt der von 11:45 als neueste Hauptversion betrachtet.
    Dass Apple neue Inhalte stillschweigend mit einer alten Version überschreibt, gibt es seit mindestens zehn Jahren.
    Ich verstehe nicht, wie so ein fataler Fehler überhaupt ins System gelangen konnte und bis heute nicht behoben ist.

    • Die zwei schwierigsten Probleme in der Software sind Cache-Invalidierung, Namensgebung, Off-by-one-Fehler und Buffer Overflows durch erzwungene Abwesenheit von Array-Indizes.
    • Auch beim Markieren oder Kommentieren mit macOS-Standardsoftware habe ich allerlei Seltsamkeiten erlebt, und Skim war ein ziemlich guter Ersatz.
      Es ist kostenlos und BSD-lizenziert, aber man sollte daran denken, dass man als PDF mit Kommentaren exportieren muss, wenn man die Änderungen auch in anderen Apps sehen möchte.
      Wer von Apples kontrasttötendem orangefarbenem Hintergrund oder dem Fehlen eines echten gelben Textmarkers genervt ist, sollte es ausprobieren. Ich bin nicht beteiligt, nur dankbar, dass es existiert.
      https://skim-app.sourceforge.io/
    • Interessanter Punkt. Ich habe Apple-Computer immer wieder genutzt, zuletzt von 2015 bis Anfang dieses Jahres, und die Aussage, es sei eine Frage der Philosophie, scheint mir plausibel.
      Auch bei der Hardware erinnere ich mich, dass Apple Diskettenlaufwerke, optische Laufwerke und gleich dreimal ganze CPU-Architekturen ziemlich gnadenlos abgeschnitten hat.
      Bei iCloud scheint sich diese Haltung auch auf Dateien zu übertragen. Ich würde nicht sagen, dass alles daran schlecht ist, aber je älter ich werde, desto weniger entspricht es meinem Geschmack.
    • Der Großteil der iCloud-Infrastruktur ist auf Cassandra-Instanzen aufgebaut. Es gibt dazu ein gutes Paper, aber ich kann es gerade nicht finden.
    • Wenn die Version von 11:35 als neueste betrachtet wurde, waren dann vielleicht die Uhren einiger Server falsch?
  • Der Autor schlägt die Nutzung von git vor, aber git verträgt sich nicht gut mit iCloud Drive.
    Früher hatte ich Hunderte von git-Repositories in iCloud Drive, und bei einem großen Commit wurde oft das gesamte iCloud Drive mit Hunderten GB erneut mit Apples Servern synchronisiert, was einen Tag dauerte.
    Ich habe versucht, das mit dem Apple-Support bis auf eine ziemlich hohe Eskalationsstufe zu lösen, aber am Ende wurde es nie behoben. Jetzt liegen meine git-Repositories außerhalb von iCloud Drive.
    Es scheint ausgelöst zu werden, wenn man schnell und gleichzeitig Hunderte Dateien ändert, bevor die Synchronisierung der letzten großen Änderung abgeschlossen ist.

    • Ich dachte, es sei fast Allgemeinwissen, dass man Versionskontrollsysteme wie git nicht mit der Cloud-basierten Versionierung von Cloud Drives wie iCloud, OneDrive oder Google Drive mischen sollte.
      Beides passt nicht gut zusammen, und besonders wenn mehrere Geräte mit demselben Cloud Drive synchronisiert sind, kann allerlei seltsames und unerwartetes Verhalten entstehen.
    • Ich bin der Autor des Originalbeitrags. Danke fürs Teilen.
      Das Problem ist, dass eine App, die ich zwingend verwenden muss, keine andere Synchronisierungsmethode unterstützt, sodass ich für einige wichtige Dateien iCloud Drive nutzen muss.
      Ohne git hätte ich nicht einmal herausfinden können, welche Dateien geändert wurden. Selbst mit git kann ich nicht sicher sein, alles erfasst zu haben. Es scheint möglich, dass iCloud-Synchronisierungskonflikte auch den git-Inhalt verändern.
    • git eignet sich von vornherein auch nicht gut für große binäre Objekte.
    • Bei wichtigen iCloud-Drive-Ordnern nutze ich meist einen automatischen Prozess, der sie irgendwohin per rsync kopiert, und dort erfolgt dann per Git, Dropbox o. Ä. eine automatische Versionierung.
      Für sehr große Daten ist das wohl nicht gut, aber die Dinge, die in iCloud Drive liegen und die ich aggressiv versionieren möchte, sind meist Text oder klein genug, dass zwei Kopien kaum ins Gewicht fallen.
    • Zur Info: Auch bei Dropbox kann git aus ähnlichen Gründen ziemlich seltsam scheitern. Früher habe ich git-remote-dropbox verwendet, um Dropbox wie einen git-Server zu nutzen.
      [1] https://github.com/anishathalye/git-remote-dropbox
  • Ein noch wichtigerer Grund, iCloud Drive nicht zu verwenden, ist, dass Ende-zu-Ende-Verschlüsselung nicht die Voreinstellung ist.
    Alles, was man dort speichert, können Apple-Systemadministratoren, Supportmitarbeiter und Personen lesen, die Apple dazu verpflichten können – zum Beispiel derzeit die US-Regierung, sogar ohne Durchsuchungsbefehl.
    Dienste ohne Ende-zu-Ende-Verschlüsselung sollte man besser nicht nutzen.
    Zwar gibt es in iCloud inzwischen optionale Ende-zu-Ende-Verschlüsselung, aber sie ist standardmäßig deaktiviert und tief in den Einstellungen vergraben, sodass sie fast niemand nutzt.
    Ich verwende Syncthing, um Dateien auf allen meinen Geräten vorzuhalten. Es bietet Ende-zu-Ende-Verschlüsselung, ist freie Software und geht auch vernünftig mit Konflikten und Versions-Backups um.
    Außerdem unterstützt es nicht vertrauenswürdige reine Synchronisationsgeräte, die den Klartext niemals sehen, sodass man sicher einen Node auf einem VPS oder an einem externen Standort betreiben kann.

    • Zu sagen „nutzt keine Dienste ohne Ende-zu-Ende-Verschlüsselung“ und zugleich „iCloud hat auch optionale Ende-zu-Ende-Verschlüsselung“ ist widersprüchlich. iCloud kann ebenfalls Ende-zu-Ende-Verschlüsselung.
      Freunde oder Familienmitglieder davon zu überzeugen, zweimal durch ein Menü zu tippen und sie einzuschalten, ist leicht. Sie davon zu überzeugen, Syncthing auf mehreren Geräten zu installieren und zu konfigurieren, ist es nicht.
      Syncthing zu befürworten ist ja schön, aber iCloud Drive schlechtzureden, weil es eine Einstellung, bei der Durchschnittsnutzer beim Verlust des Schlüssels alle Daten verlieren können, nicht standardmäßig aktiviert, ist etwas lächerlich.
      Bei der Großmutter würde ich darauf wetten, dass sie viel lieber bei Apple anrufen und die Fotos vom kleinen Johnny zurückbekommen möchte, wenn sie ihr Passwort vergessen hat, als standardmäßig eine sicherere Lösung zu haben.
    • Es gibt auch realistische Gegenargumente zur Ende-zu-Ende-Verschlüsselung. Für die meisten Menschen ist es viel wahrscheinlicher, alle Daten zu verlieren, weil sie den Verschlüsselungsschlüssel vergessen oder verlieren, als dass ihre Daten durch Administratoren oder die Regierung offengelegt werden.
      Ich würde Ende-zu-Ende-Verschlüsselung auch gern einschalten, aber ich vertraue mir selbst nicht genug, den Schlüssel nicht zu verlieren.
    • Ich sehe nicht, worin der Unterschied besteht, ob man die Ende-zu-Ende-Verschlüsselung in iCloud manuell einschaltet oder selbst einen Anbieter sucht und nutzt, der Ende-zu-Ende-Verschlüsselung standardmäßig unterstützt.
      Es ist ja nicht wie bei Messaging, wo auch die Gegenseite Ende-zu-Ende-Verschlüsselung aktivieren muss.
    • Einen einzigen Button in iCloud zu drücken, um Ende-zu-Ende-Verschlüsselung einzuschalten, scheint offensichtlich einfacher, als den Cloud-Speicheranbieter komplett zu wechseln.
    • In den iCloud-Account-Einstellungen lässt sich über Erweiterter Datenschutz die Ende-zu-Ende-Verschlüsselung aktivieren.
      https://support.apple.com/en-ca/HT212520
  • Darüber ärgere ich mich auch ziemlich. Ich hatte meine Calibre-Bibliothek im Ordner Documents abgelegt. Wo sollte ich sie sonst hinlegen, zumal dort ja kostenlose Backups dabei sind?
    Vor einiger Zeit stellte ich dann fest, dass einige Buchordner in der Bibliothek, die eigentlich die tatsächlichen epub-Dateien enthalten sollten, leer waren.
    Die Verzeichnisstruktur und die Datenbankeinträge waren noch da, aber nur die Buchdateien waren verschwunden. Nicht alle, sondern zufällig etwa 40 %.
    Fazit: Was einem lieb ist, sollte man nicht in iCloud Drive speichern, insbesondere keine Bücher.

    • Halb scherzhafter Tipp, aber vermutlich kann man sie sich bei Libgen wieder besorgen.
  • Zu der Stelle „Wenn man die Datei in einem Editor öffnet, der Konfliktbehandlung unterstützt, erscheint ein Popup, das fragt, welche Version behalten werden soll. Bei Editoren ohne Konfliktbehandlung, wie Textifier, Xcode oder Obsidian, überlässt man iCloud die Entscheidung, welche Version auf der Festplatte und im Backup gespeichert wird“: Ich finde, dass auch die App-Entwickler eine Mitschuld tragen, wenn sie iCloud-Support einbauen, aber keinen Mechanismus zur Konfliktbehandlung hinzufügen.
    Aber warum unterstützt Xcode, eine Apple-eigene App, keine Konfliktbehandlung? Apple-Software sollte den Maßstab für Drittentwickler setzen.
    Wenn nicht einmal Apple Versionskonflikte behandelt, werden andere Entwickler das natürlich auch nicht tun.

    • Ich bin der Autor des Originalbeitrags. Ich glaube, ich habe das etwas missverständlich formuliert. Der Kernpunkt ist, dass es unabhängig vom Editor ist.
      Auch mit einem Editor, der Konfliktbehandlung unterstützt, kann man Inhalte verlieren.
      Angenommen, man schreibt etwas, speichert, schließt den Editor und öffnet ihn danach nicht erneut: iCloud kann den Inhalt dieser Datei austauschen, ohne dass man es bemerkt.
      Die einzige Möglichkeit, keinen Datenverlust zu riskieren, ist, ein Git-Repository anzulegen oder alle wichtigen Dateien regelmäßig in einem Editor zu öffnen, der Konfliktbehandlung unterstützt.
    • Nur weil eine App eine Funktion nicht implementiert hat, darf eine System-API nicht stillschweigend wichtige Daten löschen.
      Das ist kein Xcode-Bug, sondern ein iCloud-Bug.
  • Wenn man Dateien in iCloud Drive ablegt, kann das iPhone jederzeit die lokale Kopie entfernen.
    Wenn man synchronisieren und zugleich sicher sein will, dass zu 100 % eine lokale Kopie vorhanden ist, muss man dieselbe Datei sowohl in iCloud Drive als auch im Ordner „Auf meinem iPhone“ ablegen.
    Das ist der Grund, warum Apple Books, Numbers und jede App, die iCloud Drive nutzt, ständig lokale Kopien entfernen.
    Ich habe eine einfache Notizen-App gebaut, die iCloud Drive nutzt, und sobald man die App schloss, entfernte iCloud gierig selbst 2-KB-txt-Dateien. Manchmal löschte es sie auch nicht, es war also ziemlich zufällig.
    Es spielt keine Rolle, ob noch viel Speicherplatz frei ist, und iCloud kann sogar lokale Versionen von Dateien entfernen, die man ständig nutzt.
    Der Apple Developer Support sagte, man könne nichts tun. Auch für Entwickler gibt es keine Möglichkeit, eine Datei als „niemals entfernen“ zu markieren.
    In der offiziellen Dokumentation empfiehlt Apple tatsächlich, alle Dateien der Nutzer in iCloud Drive zu speichern und keine Kopien unter „Auf meinem iPhone“ abzulegen.

  • Ich hatte ein ähnliches Problem mit verschwindenden Contacts. Es trat eine Zeit lang auf, aber zuerst dachte ich, es sei mein Fehler.
    Eines Morgens sah ich dann, dass der Kontakt eines Freundes, mit dem ich am Vorabend geschrieben hatte, verschwunden war, und mir wurde klar, dass das Problem iCloud war.
    Ich kontaktierte den Apple Support, und nachdem wir alle grundlegenden Schritte durchgegangen waren, räumte der Mitarbeiter ein, dass dies ein bekanntes Problem sei, man aber die Ursache nicht gefunden habe und es keine Lösung gebe.
    Er bat mich, die Kontakte zu überwachen, damit ich sagen könne, wann die Löschung passiert, und meinte, ich müsse den Zeitraum auf wenige Minuten eingrenzen.
    Die Begründung war: „Das iPhone erzeugt viele Logs, und wenn Sie nicht genau eingrenzen können, wann es passiert ist, können die Ingenieure nichts damit anfangen.“
    Ich fand, dass eine Eingrenzung des Bugs auf ein 8-Stunden-Fenster schon ziemlich gut war, aber der Mitarbeiter sagte, die Ingenieure verlangten eine Genauigkeit im Minutenbereich.
    Am Ende sagte der Mitarbeiter, wie immer, wenn man dem Apple Support ein schwieriges Problem übergibt, er werde sich wieder melden – tat es aber nie, und es passierte nichts.
    Ich habe meine Kontakte zu Google verschoben und die Sache einfach vergessen.

  • Ich habe mir dieses Problem angesehen. Apple hat sich offenbar für eine Synchronisierungsstrategie entschieden, die unter bestimmten Bedingungen Nutzerdaten verliert, um Nutzer nicht allzu sehr mit Konflikten zu belästigen.
    Man hat sich also dagegen entschieden, deutlich ältere Verfahren zu verwenden, mit denen sich kollidierende Revisionen hätten erhalten lassen.
    Die Zusammenfassung gibt es hier:
    https://www.youtube.com/watch?v=q8k1q6kf1W0

    • Um Nutzer nicht zu stören, hätte man die doppelten Dateien auch an einen Ort wie einen Konfliktordner legen können.
      Dann hätten die Leute nach „Was hat Apple mit meinen Dateien gemacht?“ suchen und herausfinden können, wie sie sie wiederherstellen.
      Apropos nicht stören: iOS hat bei irgendeinem Update stillschweigend meine Anrufeinstellungen geändert, sodass es bei einigen Anrufern nicht mehr klingelte.
      Das war so eine Art beruhigender Unsinns-Funktion; wegen der Eigenheiten des NHS habe ich dadurch den Anruf eines onkologischen Chirurgen verpasst, den man nur schwer zurückrufen konnte, was mich sehr beunruhigt hat.
  • Bei mir hängt iCloud Drive manchmal einfach irgendwo fest und synchronisiert nicht. Im iCloud-Drive-Symbol im Finder kann man den Synchronisierungsstatus sehen.
    Alle Apps unter macOS und iOS zu schließen und killall bird auszuführen, hilft manchmal. bird ist der iCloud-Synchronisierungsdienst.