feat: die Sicherung laesst sich jetzt zurueckspielen -- und wurde es auch

Bis hierhin war sie GEPRUEFT, nicht ERPROBT. sichern.ps1 packt sein Archiv aus,
oeffnet die Datenbank, zaehlt, laedt hoch, holt zurueck und vergleicht die
Pruefsumme. Das beantwortet "ist die Datei heil?".

Es beantwortet nicht die Frage, auf die es ankommt: "kommt daraus wieder ein
laufender Dienst?" Dazwischen liegen Handgriffe, die man sonst zum ersten Mal
an dem Abend macht, an dem man sie unter Druck macht -- wie das Volume heisst,
dass der Container stehen muss, wem die Dateien gehoeren muessen, dass thumbs/
und webp/ abgeleitet sind und neu gerechnet werden wollen.

Ein Backup, das man nie zurueckgespielt hat, ist kein Backup, sondern eine
Datei.

DIE UEBUNG IST DER STANDARD, und sie ist der eigentliche Gewinn: Wegwerf-
Volume anlegen, Archiv hineinspielen, einen ZWEITEN Container davorhaengen
(ohne veroeffentlichten Port -- der Uebungslauf soll sich mit nichts anlegen,
was schon laeuft), auf /health warten, nachzaehlen, und dann der Teil, auf den
es ankommt: drei zufaellige Dateien DURCH den Dienst holen und ihr SHA-256
gegen den vergleichen, der in der Datenbank steht. Danach alles abraeumen, im
finally -- ein liegengebliebenes Uebungs-Volume mit 300 MB findet sonst niemand
wieder.

Gelaufen, nicht behauptet:

    4452 Medieneintraege, 316,3 MB, 2 Token, 2 Benutzer, 0 im Papierkorb
    4452 Dateien -- gleich viele wie Eintraege
    ok  items/velum2.png                  113567 B
    ok  items/flesh-dolphin-2star.png       3623 B
    ok  items/burgermeat.png                4269 B
    Die Uebung ist bestanden.

Der echte Dienst lief die ganze Zeit weiter und war danach unveraendert
(health 200, dasselbe Volume, 4542 Dateien).

DER ERNSTFALL verlangt ein getipptes ZURUECKSPIELEN und sagt vorher, was
passiert. Er loescht thumbs/ und webp/ mit: Abgeleitetes stehenzulassen waere
schlimmer als es neu zu rechnen -- die Galerie zeigte sonst die Vorschau einer
Datei, die dort nicht mehr liegt. Loeschen und Einspielen laufen in EINEM
Container-Aufruf, damit dazwischen niemand den Dienst wieder startet. Geht
etwas schief, sagt das Skript, dass der Container steht, und wie man ihn
startet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 23:50:46 +02:00
co-authored by Claude Opus 5
parent 7877c0f7b9
commit 338f8e59cf
3 changed files with 348 additions and 0 deletions
+35
View File
@@ -803,6 +803,41 @@ nach. Eigene Art mit eigenem Zeichen; die Filterleiste kennt jetzt auch
`/api/exists?pfad=…` statt über den Pfad, mit dem Grund als Kommentar daneben.
Syntaktisch gegengeprüft (`luac -p`).
### ✅ Fertig — die Sicherung ist zurückgespielt worden
Bis hierhin war sie **geprüft**, nicht **erprobt**. `sichern.ps1` packt das
Archiv aus, öffnet die Datenbank, zählt, lädt hoch, holt zurück und vergleicht
die Prüfsumme — das beantwortet „ist die Datei heil?". Es beantwortet nicht
„kommt daraus wieder ein Dienst?".
Dazwischen liegen Handgriffe, die man sonst zum ersten Mal an dem Abend macht,
an dem man sie unter Druck macht: wie das Volume heißt, dass der Container
stehen muss, wem die Dateien gehören müssen, dass `thumbs/` und `webp/`
abgeleitet sind.
`tools/zurueckspielen.ps1` macht beides — und die **Übung ist der Standard**:
Wegwerf-Volume, Archiv hinein, ein *zweiter* Container davor, drei zufällige
Dateien **durch den Dienst** geholt und ihr SHA-256 gegen die Datenbank
geprüft, danach alles abgeräumt. Der laufende Dienst wird nicht angefasst.
Am 11.08.2026 gelaufen, mit dem Archiv von 23:07:
```
4452 Medieneinträge, 316,3 MB, 2 Token, 2 Benutzer, 0 im Papierkorb
4452 Dateien -- gleich viele wie Einträge
ok items/velum2.png 113567 B
ok items/flesh-dolphin-2star.png 3623 B
ok items/burgermeat.png 4269 B
Die Uebung ist bestanden.
```
Der Ernstfall (`-Echt`) verlangt ein getipptes `ZURUECKSPIELEN`, hält den
Container an, ersetzt `media.db`, `files/` und `papierkorb/`, **löscht
`thumbs/` und `webp/`** (Abgeleitetes stehenzulassen wäre schlimmer: die
Galerie zeigte die Vorschau einer Datei, die dort nicht mehr liegt), startet
wieder und zählt selbst nach.
### ⬜ Als Nächstes
**Der Vergleichsmaßstab ist weg.** Am 11.08.2026 sind die Lite-Container