Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Backups/Snapshots

note

Snapshots sind lokale Kopien eines Subvolumes (in unserem Fall Ordner in /persist) zu einem bestimmten Zeitpunkt. Sie sind eher für schnelle “Rollbacks” (z.B. nach versehentlichem löschen der Datenbnk) gedacht als für tatsächliche Disaster Recovery. Backups wiederum liegen nicht lokal, sondern auf einer anderen Maschine (am besten off-site) und können auch nach einem kompletten Ausfall des Host Systems wiederhergestellt werden.

Die Ordner Struktur in /persist wird automatisch gesnapshotted. Die Snapshots sind inkrementell und read-only und liegen in /persist/.snapshots.

Snapshots werden automatisch jede Stunde und beim (neu-)starten eines NixOS Containers erstellt.

Snapshots auflisten

Alle Snapshots können mit sudo btrbk ls /persist/.snapshots aufgelistet werden.

Snapshots sind nach folgendem Format benannte:

name.YYYYMMDD<T>hhmmss+<TZOffset>
  ▲    ▲
  │    └── Zeitstempel, der 01.04.2025 um 13:20:05 Sommerzeit (UTC+2) wäre
  │        20250401T132005+0200
  │
  └─ Name des Ordners in /persist

Snapshots erstellen

Ein manueller Snapshot (für z.B. fscshhude) kann mit sudo btrbk run /persist/fscshhude erstellt werden.

Snapshots wiederherstellen

Wir gehen dies anhand eines Beispiels durch indem wir einen Snapshot des /persist/fscshhude Ordner wiederherstellen wollen. Alle Orte wo fscshhude steht müssen dann natürlich durch den eigentlichen Ordnernamen in /persist ersetzt werden.

Schritt -1: Den Service stoppen

WICHTIG! Ist halt doof wenn der Service noch in die Ordner schreibt während wir snapshotten (Unfertige Transaction oder son kack).

Schritt 0: Den aktuellen Zustand snapshotten

Wiederherstellen um dann zu merken das der gerade weggeworfene Zustand doch richtig war, ist doof. Deswegen machen wir vorher immer brav einen Snapshot damit uns auch niemand mit “Kein Backup, kein Mitleid” hauen kann.

Dafür einfach den Command sudo btrbk run /persist/fscshhude ausführen.

Schritt 1: Welchen Snapshot wollen wir den haben?

Wie oben beschrieben mit sudo btrbk ls /persist/.snapshots alle Snapshots auflisten und den richtigen aussuchen. Wir nehmen als Beispiel jetzt mal /persist/.snapshots/fscshhude.20250928T000000+0200.

Schritt 2: Den aktuellen Zustand entfernen

Jetzt entfernen wir den alten Zustand um Platz für den Snapshot zu machen.

Dafür führen wir sudo btrfs subvolume delete /persist/fscshhude aus.

Schritt 3: Den Snapshot widerherstellen

Dafür führen wir sudo btrfs sub snap /persist/.snapshots/fscshhude.20250928T000000+0200 /persist/fscshhude aus.