FunktionenPreiseDokumentationBlog
mote holen
← Blog
Entwicklung·3. September 2026·6 Min. Lesezeit

Wie wir verhindert haben, dass Dateien beschädigt werden, selbst wenn das Programm beim Speichern beendet wird

Was passiert mit einem Dokument, wenn sich der Laptop genau beim Speichern ausschaltet? Bei mote lautet die Antwort: „Entweder ist es der Stand vor dem Speichern oder der Stand danach.“

m
mote
Die Liste der Backups im Zustandsordner. Die Datei unmittelbar vor dem Speichern bleibt mit dem Dokumentnamen und einem lesbaren Zeitstempel erhalten, während im Dokumentordner nichts zusätzlich angelegt wird.
Die Liste der Backups im Zustandsordner. Die Datei unmittelbar vor dem Speichern bleibt mit dem Dokumentnamen und einem lesbaren Zeitstempel erhalten, während im Dokumentordner nichts zusätzlich angelegt wird.

Was passiert, wenn genau in dem Moment, in dem eine Datei gespeichert wird, der Strom ausfällt?

Normalerweise kann es passieren, dass eine Datei nur zur Hälfte gespeichert wird. Bei einem Editor, den man lange verwendet, sollte so etwas nicht vorkommen. Deshalb schützt mote die ursprüngliche Datei auch dann, wenn das Speichern fehlschlägt.

Zuerst wird im selben Ordner wie das Dokument eine temporäre Datei angelegt. Nachdem der gesamte Inhalt geschrieben und auf den Datenträger übertragen wurde, werden die Berechtigungen der ursprünglichen Datei übernommen. Sobald alles vorbereitet ist, wird die temporäre Datei auf den ursprünglichen Namen umbenannt.

Das Umbenennen geschieht in einem einzigen Vorgang. Selbst wenn währenddessen der Strom ausfällt, bleibt entweder die vorherige oder die neue Datei zurück. Eine nur zur Hälfte gespeicherte Datei bleibt nicht zurück.

Auch die Berechtigungen bleiben unverändert. Denn beim Speichern geht es darum, den Inhalt zu ändern, nicht darum, festzulegen, wer die Datei lesen darf.

Auch die Bytes des Dokuments werden nicht verändert. CRLF-Zeilenumbrüche, BOM, gemischte Zeilenumbrüche und selbst das Vorhandensein oder Fehlen eines letzten Zeilenumbruchs bleiben beim Speichern unverändert. Wenn Sie eine Datei öffnen und nichts daran ändern, sollte sich beim erneuten Speichern kein einziges Byte verändern. mote testet dieses Prinzip bei jeder Veröffentlichung.

Links werden nicht getrennt

Auch eine sichere Speichermethode lässt sich nicht unverändert auf jede Datei anwenden.

Wenn ein symbolischer Link wie eine gewöhnliche Datei ersetzt wird, verschwindet der Link. Der bearbeitete Inhalt wird dann auch nicht in das Dokument übernommen, auf das der Link verwiesen hat. mote folgt dem Link und speichert die tatsächliche Datei. Der Link selbst bleibt unverändert bestehen.

Bei Hardlinks verweisen mehrere Namen auf dieselbe Datei. Wird nur einer dieser Namen durch eine neue Datei ersetzt, geht die Verbindung verloren. Deshalb werden Dateien mit Hardlinks direkt an Ort und Stelle überschrieben. Dabei wird zwar auf Atomarität verzichtet, doch ein unmittelbar vor dem Speichern erstelltes Backup verringert das Risiko.

Dateien, die nicht gelesen werden konnten, werden nicht gespeichert

mote liest vor dem Speichern zuerst die Datei auf dem Datenträger.

Wenn die Datei nicht existiert, wird sie neu angelegt. Wenn sie gelesen werden kann, wird sie nach dem Erstellen eines Backups gespeichert. Ist die Datei vorhanden, kann aber nicht gelesen werden, wird der Speichervorgang abgebrochen.

Dazu gehören alte Dokumente mit nicht unterstützter Zeichenkodierung, Ordner und Dateien, für die keine Berechtigung besteht. Wenn eine nicht lesbare Datei wie ein leeres Dokument angezeigt und anschließend überschrieben würde, könnten auch sämtliche Inhalte verschwinden, die der Benutzer gar nicht sehen konnte.

Wenn eine Datei nicht gelesen werden kann, kann auch kein Backup erstellt werden. Deshalb ist der Verzicht auf das Speichern die einzige Möglichkeit, die Datei zu schützen.

Backups und Entwürfe werden nicht neben dem Dokument angelegt

Die Datei vor dem Speichern wird im Zustandsordner gesichert. Ihr Name enthält den Dokumentnamen und den Zeitpunkt des Speicherns.

문서이름.2026-09-07-153914.md

Für jedes Dokument werden die 20 neuesten Backups aufbewahrt, ältere werden zuerst gelöscht. Bereits am Dateinamen lässt sich erkennen, wann ein Backup erstellt wurde, und es kann direkt mit dem gewohnten Editor geöffnet werden.

Für ein Dokument, das noch nie gespeichert wurde, gibt es keine Originaldatei, die gesichert werden könnte. Stattdessen wird ein Entwurf angelegt. Wenn seit dem Ende der Bearbeitung eine Sekunde vergangen ist, wird eine Kopie im Zustandsordner gespeichert. Der Name enthält den Zeitpunkt und die erste Überschrift des Dokuments.

Wenn die Datei gespeichert oder das Dokument vom Benutzer verworfen wird, wird auch der Entwurf gelöscht. Dasselbe gilt beim Beenden der App. Ist ein Speicherort vorhanden, wird das Dokument als Datei gespeichert, andernfalls bleibt es als Entwurf erhalten.

Auch temporäre Dateien, die nach einem Absturz zurückgeblieben sind, werden beim nächsten Öffnen des Dokuments aufgeräumt. Läuft der Prozess, der die betreffende Datei erstellt hat, jedoch noch, wird sie nicht angerührt. Der Grund dafür ist, dass möglicherweise ein anderes Fenster gerade speichert.

Dokumente in /tmp oder im Cache-Ordner können bei einem Neustart verschwinden. Wenn ein solches Dokument geöffnet wird, erscheint ein Hinweis, es an einem anderen Ort zu speichern.

Darüber hinaus werden im Dokumentordner keinerlei Hilfsdateien angelegt. Einstellungen, Backups, Entwürfe und Informationen zur zuletzt geöffneten Datei werden vollständig im Zustandsordner im Home-Verzeichnis des Benutzers aufbewahrt. Funktionen, die einen Zustand, der sich nicht in Markdown abbilden lässt, separat speichern müssten, wurden nicht aufgenommen.

Banner, das beim Öffnen eines Dokuments im temporären Ordner erscheint — neben dem Hinweis, es an einem anderen Ort zu speichern, da es bei einem Neustart verschwinden kann, befinden sich die Schaltflächen „Speichern unter“ und „Weiter bearbeiten“
Banner, das beim Öffnen eines Dokuments im temporären Ordner erscheint — neben dem Hinweis, es an einem anderen Ort zu speichern, da es bei einem Neustart verschwinden kann, befinden sich die Schaltflächen „Speichern unter“ und „Weiter bearbeiten“

Backups werden benötigt, wenn sich etwas nicht mehr über „Rückgängig“ wiederherstellen lässt. Etwa nachdem die App erneut geöffnet wurde oder wenn man erst lange später bemerkt, dass man etwas falsch gespeichert hat. Beim Öffnen einer Backup-Datei lässt sich für jeden Speichervorgang das Dokument genau in dem Zustand unmittelbar vor dem Überschreiben betrachten.

Auf Dateien und das Netzwerk wird nur mit Erlaubnis des Benutzers zugegriffen

Das automatische Speichern muss in den Einstellungen ausdrücklich aktiviert werden. Auch die Wartezeit bis zum Speichern kann ausgewählt werden.

Wenn es aktiviert ist, wird gespeichert, sobald nach dem Ende der Bearbeitung die eingestellte Zeit verstrichen ist. Die Speichermethode ist dieselbe wie beim manuellen Speichern. Zuerst wird ein Backup erstellt, dann eine temporäre Datei angelegt und anschließend gegen die ursprüngliche Datei ausgetauscht. Das automatische Speichern ist keine separate Speicherfunktion, sondern ein Timer, der denselben Speichervorgang stellvertretend auslöst. Es wird nur aktiv, wenn etwas bearbeitet wurde.

Registerkarte „Allgemein“ in der Einstellungskarte — ein Schalter für automatisches Speichern, darunter die Verzögerung für automatisches Speichern (Sekunden) mit dem Wert 1 und in der untersten Zeile ein Schalter zur Suche nach Updates beim Start. In dieser Aufnahme sind beide ausgeschaltet
Registerkarte „Allgemein“ in der Einstellungskarte — ein Schalter für automatisches Speichern, darunter die Verzögerung für automatisches Speichern (Sekunden) mit dem Wert 1 und in der untersten Zeile ein Schalter zur Suche nach Updates beim Start. In dieser Aufnahme sind beide ausgeschaltet

Auch die Suche nach Updates muss ausdrücklich aktiviert werden. Ist sie ausgeschaltet, verwendet mote das Netzwerk nicht.

Ist sie aktiviert, wird nach dem Start der App einmal im Hintergrund nach Updates gesucht. „Einmal täglich“ wird nicht dadurch eingehalten, dass die App die Zeit misst, sondern mithilfe einer Stempeldatei im Zustandsordner. Während die App geöffnet bleibt, wird nicht erneut geprüft, und es gibt auch keinen dauerhaft laufenden Timer.

Selbst wenn eine neue Version verfügbar ist, wird sie nicht sofort heruntergeladen. Es erscheint lediglich unten rechts auf dem Bildschirm eine Benachrichtigung. Bevor der Benutzer darauf klickt, wird weder etwas heruntergeladen noch installiert oder neu gestartet.

Das einzige Format, in dem sich die App selbst aktualisieren kann, ist AppImage. Der Grund dafür ist, dass dafür lediglich eine einzelne Datei ausgetauscht werden muss. Wurde sie über apt oder Flatpak installiert, wird nur der passende Befehl angezeigt. Ausgeführt wird er vom Benutzer selbst.

Bei der Suche nach Updates werden nur die Plattform und der Distributionskanal übermittelt. Informationen, die den Benutzer identifizieren, oder Informationen zu geöffneten Dokumenten werden nicht gesendet.

Sicheres Speichern bedeutet nicht, dass das Speichern immer gelingt. Es bedeutet, dass selbst bei einem Fehlschlag nichts verloren geht.

← ÄlterDamit nur die von mir eingegebenen Bytes gespeichert werden, ist die Datei die maßgebliche WahrheitNeuer →Damit das Dokument auch nach `git checkout` nicht leer ist, prüfen wir Bytes statt Zeitstempel
Bleiben Sie per RSS auf dem Laufenden.
Nur das Schreiben bleibt.
Deutsch
© 2026 mote