Zum Inhalt springen
xaweho

Knowledge Base · mittel

Prune erklärt — wie PBS alte Backups automatisch wegräumt

Prune entscheidet, welche Snapshots gelöscht werden — anhand der Retention-Policy. Was es macht, was es nicht macht, und warum es für sich allein keinen Speicher freigibt.

mittel ·

Prune ist der Vorgang, bei dem PBS Snapshots als „nicht mehr benötigt” markiert und löscht — anhand der Retention-Policy. Wichtig zu verstehen: Prune allein gibt noch keinen Speicher frei. Prune entscheidet nur, welche Snapshots weg sollen. Den Speicher zurückbekommt erst die Garbage Collection (GC).

Wie Prune entscheidet

Prune folgt der Retention-Policy. Für jeden Snapshot prüft es, ob er nach den Regeln behalten werden soll:

  • Keep last N: die letzten N Backups, egal wann
  • Keep daily N: ein Backup pro Tag, für die letzten N Tage
  • Keep weekly N: ein Backup pro Woche, für die letzten N Wochen
  • Keep monthly N: ein Backup pro Monat, für die letzten N Monate
  • Keep yearly N: ein Backup pro Jahr, für die letzten N Jahre

Wenn ein Snapshot durch eine dieser Regeln behalten werden soll, bleibt er. Sonst wird er beim nächsten Prune-Lauf gelöscht.

Konkretes Beispiel: Du hast keep-daily=7, keep-weekly=4, keep-monthly=6, keep-yearly=2. Bei täglichen Backups behältst Du:

  • Die 7 letzten täglichen Backups
  • Plus 4 wöchentliche (jeweils das Sonntag-Backup, aber pro Woche nur eines)
  • Plus 6 monatliche (das letzte des Monats)
  • Plus 2 jährliche (das letzte des Jahres)

Macht insgesamt 7 + 3 (Wochen, die nicht von Daily abgedeckt) + 5 (Monate, die nicht von Weekly abgedeckt) + 2 = ~17 Snapshots pro VM.

PBS rechnet hier intelligent: Snapshots, die mehrere Kriterien erfüllen, werden nicht doppelt gezählt.

Wo wird Prune konfiguriert?

Zwei Orte, mit unterschiedlichen Auswirkungen:

1. Im PVE-Backup-Job

In Datacenter → Backup → Job → Tab Retention legst Du die Policy an. Diese Policy gilt nur für den lokalen Backup-Job — also nur für die Snapshots, die dieser Job erzeugt.

Wenn Du mehrere Jobs hast (etwa für Test- und Produktiv-VMs), kannst Du pro Job eigene Retention setzen.

2. Im PBS-Datastore

In Datastore → Prune & GC legst Du eine Datastore-weite Policy an. Diese gilt für alle Snapshots im Datastore, unabhängig davon, wer sie erzeugt hat.

Wichtig: Wenn beide Policies gesetzt sind, gilt die strengere. PBS-Policy keep-daily=7 und PVE-Job keep-daily=14 → effektiv werden 7 behalten.

Empfohlene Policy

Für die meisten Privatkunden:

keep-last:    3
keep-daily:   7
keep-weekly:  4
keep-monthly: 6
keep-yearly:  2

Das gibt Dir ein Sicherheitsnetz für gestern, letzte Woche, letzten Monat und letztes Jahr — bei minimalem Speicherverbrauch.

Für höhere Compliance-Anforderungen (Praxen, Kanzleien):

keep-last:    7
keep-daily:  30
keep-weekly: 12
keep-monthly: 24
keep-yearly:  7

Das hält 30 tägliche, 12 wöchentliche, 24 monatliche und 7 jährliche — gut für Audit-Trails über mehrere Jahre.

Prune ausführen

In der GUI:

  1. Datastore → Content öffnen.
  2. Auf einen VM-Knoten oder den ganzen Datastore klicken.
  3. Prune im Action-Menü.
  4. Im Dialog die Retention-Werte eintragen, Dry-Run aktivieren — Du siehst, welche Snapshots gelöscht würden.
  5. Wenn Du zufrieden bist, Dry-Run deaktivieren und ausführen.

Auf der CLI:

proxmox-backup-client prune \
  vm/100 \
  --keep-daily 7 --keep-weekly 4 --keep-monthly 6 \
  --dry-run \
  --repository 12345@pbs@pbs01.xaweho.de:12345

Mit --dry-run siehst Du, was passieren würde, ohne dass tatsächlich was gelöscht wird.

Snapshot vor dem Prune schützen

Wenn Du einen wichtigen Snapshot hast, der auf keinen Fall gelöscht werden darf:

  1. Datastore → Content öffnen, Snapshot wählen.
  2. Auf den Snapshot klicken → Protected Häkchen setzen.

Der Snapshot wird dann von keinem Prune-Lauf mehr berührt — auch nicht, wenn er nach Retention längst weg sollte.

Praktisch z.B. für „Pre-Migration-Backup” oder „Backup vor PostgreSQL-17-Update”.

Häufige Fragen

Warum ist mein Datastore voll, obwohl Prune läuft? Weil Prune allein keinen Speicher freigibt. Prune markiert Snapshots als gelöscht, aber die Chunk-Files (die eigentlichen Daten) liegen weiter auf der Disk — bis Garbage Collection läuft. Siehe Garbage Collection.

Wann läuft Prune automatisch?

  • Wenn Du es im PVE-Backup-Job aktiviert hast (Standard: ja, nach jedem Backup-Lauf).
  • Wenn Du im PBS-Datastore eine Schedule-Policy gesetzt hast.

Kann ich einen Snapshot nach dem Prune wiederherstellen? Nein, nicht aus dem PBS. Sobald Prune gelaufen ist und GC danach, sind die Chunks weg. Wenn der Snapshot gerade erst geprunt wurde, aber GC noch nicht lief, könnten wir theoretisch den Snapshot-Eintrag wiederherstellen — aber davon raten wir ab, weil Inkonsistenzen entstehen können.

Was bedeutet “keep-last”? Die N letzten Backups, völlig unabhängig vom Datum. Praktisch z.B. wenn Du keep-last=3 setzt: die drei letzten Backups bleiben immer, auch wenn sie alle innerhalb der letzten Stunde entstanden sind. Sicherheitsnetz gegen versehentliches Massen-Pruning.

Kann ich Prune manuell triggern? Ja, im Datacenter → Backup → Job → Run now, dann läuft Backup + Prune sofort. Oder in PBS unter Datastore → Prune & GC → Run prune.

Wie sehe ich, was Prune gelöscht hat? Im Task-Log: Tasks → letzte Prune-Aufgabe → Log. Dort steht zeile für Zeile, welcher Snapshot warum gelöscht wurde.

Kann ich Snapshots mit Notes vor Prune schützen? Nicht automatisch — Notes sind reine Annotations. Schutz vor Prune geht ausschließlich über das Protected-Flag.

Weiter geht’s

Passende Produkte
Tags
pbs prune retention

Hat dieser Artikel Dir geholfen?

Wenn nicht, schreib uns ein Ticket. Wenn ja, freuen wir uns über eine Empfehlung — beide bekommen 25 € Guthaben aufs Kundenkonto.