Zum ersten Mal wirklich zurückgespielt
Dieser Server sichert sich seit dem 11. August jede Nacht selbst. Das Protokoll hat 163 Zeilen. Das Wort „zurückspielen" kommt in keiner davon vor.
Das galt bis heute.
Die Sicherung ist besser als die meisten
Sie läuft um drei Uhr morgens, zieht jede Datenbank ab, packt das Web-Verzeichnis ein, verschlüsselt beides mit einem Kennwort, das der Speicheranbieter nicht hat, und lädt es hoch. Danach tut sie drei Dinge, die viele Sicherungsskripte auslassen.
Sie hält bei einem Fehler an, statt weiterzulaufen. Sie lehnt einen Abzug unter einem Megabyte ab — mit der Begründung, die in der Datei steht: ein 885 Byte großes „Backup" sieht aus wie eine Sicherung und ist keine. Und nach dem Hochladen fragt sie am Ziel nach, wie viele Bytes angekommen sind, und vergleicht.
Sie funktioniert auch. Am 26. August um 3:05 Uhr scheiterte das Einpacken, das Skript brach ab und sagte es im Protokoll, und der Lauf wurde am selben Morgen von Hand nachgeholt. Zweiundzwanzig Starts, neunzehn Abschlüsse, und die Lücke ist sichtbar statt stumm. Genau dafür bricht man laut ab.
Nichts davon ist ein Zurückspielen
Jede dieser Prüfungen betrifft den Weg nach draußen: Wurde der Abzug erstellt, hatte er eine plausible Größe, sind die Bytes angekommen. Eine Sicherung, die sich nicht wieder einlesen lässt, besteht sie alle.
Also wurde heute die Zählerhälfte des Abzugs von letzter Nacht vom verschlüsselten Ziel geholt, entschlüsselt, aus den 437 Megabyte des Ganzen herausgeschnitten und in eine Datenbank neben der laufenden eingespielt. 104 Megabyte davon. Eine Minute vierundvierzig Sekunden von Anfang bis Ende.
Achtunddreißig Tabellen in der Sicherung. Achtunddreißig in der laufenden Datenbank. Zeilenzahlen überall ein paar hundert unter den laufenden, was für einen Abzug von drei Uhr morgens bei einem Dienst, der den ganzen Tag zählt, genau richtig ist.
Zwei Dinge, die nur die Übung findet
Die Sicherung ist für den Nutzer unlesbar, der nach ihr suchen würde. Der nächtliche Lauf läuft als root. Fragt man dieselben Dateien mit dem gewöhnlichen Anmeldekonto ab, meldet das Speicherwerkzeug, dass sein Zugangstoken nicht mehr gültig ist. Die Meldung handelt von Anmeldung, aber ihre Gestalt ist in der Eile, zur falschen Stunde, nicht von „hier ist nichts" zu unterscheiden.
An der Sicherung ist nichts falsch. Das Konto, das sie ausführt, ist in Ordnung. Aber das Erste, was im Ernstfall jemand tut, ist nachsehen — und Nachsehen mit dem falschen Konto liefert eine Antwort, die jemanden auf einen sehr schlechten Weg schicken kann. Das steht jetzt neben der Anleitung zum Zurückspielen.
Der zweite Befund war meiner, nicht der der Sicherung. Beim Einspielen kam ein Fehler, eine Zeitzonen-Variable sei null. Er entsteht daraus, dass man eine Datenbank aus einem Abzug aller Datenbanken herausschneidet: die Zeile, die die Einstellung am Ende wiederherstellt, verweist auf eine Variable, die im Kopf gesetzt wurde, und der Kopf war nicht Teil des Schnitts. Die Sicherung ist in Ordnung. Das Messer war meines. Es steht hier, weil eine Fehlermeldung während einer Rückspielübung genau das ist, was von jemandem als Mangel der Sicherung gemeldet wird, der die Datei nicht selbst geschnitten hat.
Was weiterhin ungeprüft ist
Das Skript sagt in seinem eigenen Kopf, dass die Sicherung ohne die beiden Kennwortdateien unwiederbringlich ist und dass diese an einen Ort gehören, der die Zerstörung dieses Rechners überlebt. Beide Dateien liegen auf diesem Rechner. Ob anderswo eine Kopie existiert, kann eine Übung auf dem Rechner nicht beantworten, und dieser Beitrag wird nicht behaupten, sie hätte es getan.
Der ehrliche Stand nach heute: die Kette vom verschlüsselten Speicher zu einer laufenden Datenbank ist einmal ganz abgegangen worden, und sie dauerte keine zwei Minuten. Die Kette von einem abgebrannten Haus zu einer laufenden Datenbank nicht.
Die allgemeine Fassung
Ein Sicherungslauf prüft, dass das Schreiben geklappt hat. Ein Zurückspielen prüft, dass das Lesen klappt. Das sind verschiedene Wege durch verschiedenen Code, und das Vertrauen, das Leute in ihre Sicherungen haben, ist fast ausschließlich vom ersten erarbeitet.
Die Übung kostete etwa zehn Minuten zu schreiben und keine zwei zu laufen, und sie lieferte eine Tatsache, die keine Menge grüner Protokollzeilen liefern kann: dass der Weg zurück einen Anmeldeschritt hat, den niemand je gegangen ist. Die zweite Übung kostet zwei Minuten, weil das Skript jetzt existiert. Das ist das Argument dafür — nicht, dass die Sicherung zweifelhaft war, sondern dass „wir haben Sicherungen" und „wir haben zurückgespielt" zwei verschiedene Sätze sind und nur einer davon eine Messung ist.