# Proxmox Backup: Aufbewahrung und Zeitpläne richtig einstellen

**Grundsatz:** **Nur der PBS** entscheidet, welche Backups wegfallen. Der PVE sichert nur und behält alles (`keep-all`). Sonst räumen zwei Regelwerke gleichzeitig auf, und keiner weiß mehr, welches gilt.

## 1. PVE: Aufbewahrung auf „Keep all“

Das geht an zwei Stellen. Eine davon reicht, sicherer ist es, beide einzustellen:

1. **Pro Backup-Job:** Datacenter → Backup → Job → Edit → Reiter *Retention* → **Keep all backups** anhaken. In der Job-Liste steht dann in der Spalte Retention `keep-all=1`.
2. **Am Storage:** Datacenter → Storage → PBS-Storage → Edit → Reiter *Backup Retention* → **Keep all backups**. Das greift für alle Jobs, die „Fallback from storage config“ anzeigen.

## 2. PVE: Backup-Zeitpläne

Das Feld *Schedule* ist ein **Textfeld**. Die Liste darunter enthält nur Vorschläge. Lösche den Inhalt, tippe den Zeitplan ein und bestätige mit **Tab** und nicht mit Enter. Mit Enter übernimmt das Feld sonst den markierten Vorschlag. Danach muss in der Liste unter *Next Run* eine Uhrzeit stehen.

Bewährte Aufteilung in zwei Jobs:

<table id="bkmrk-job-welche-vms-sched"><tbody><tr><th>Job</th><th>Welche VMs</th><th>Schedule</th><th>Warum</th></tr><tr><td>Arbeits-VMs</td><td>Fileserver, Terminalserver, VDI, Datenbanken</td><td>`mon..fri 06..20/2:00`</td><td>Alle 2 Stunden während der Arbeitszeit. Nachts ändert sich nichts, und der PBS hat Ruhe für die Wartung.</td></tr><tr><td>Infrastruktur</td><td>DC, Proxy, Telefonanlage, DynDNS-Client, Kleinkram</td><td>`21:00` (täglich)</td><td>Durch die Deduplizierung kostet ein unverändertes Backup fast nichts. Ein tägliches Backup auch am Wochenende fängt z. B. einen neu angelegten Benutzer im DC mit ab.</td></tr></tbody></table>

**Haken bei „Enable“ prüfen.** In der Liste muss in der Spalte Enabled ein ✔ stehen. Ein Strich heißt: Der Job ist deaktiviert.  
Ausgeschaltete VMs dürfen trotzdem im Job stehen, sie werden ganz normal gesichert.  
Über den Knopf *Show: Guests Without Backup Job* findest du VMs, die in keinem Job stehen.

### Kurzreferenz Zeitplan-Syntax (systemd-Kalender)

<table id="bkmrk-schedule-bedeutung-2"><tbody><tr><th>Schedule</th><th>Bedeutung</th></tr><tr><td>`21:00`</td><td>täglich 21:00</td></tr><tr><td>`mon..fri 22:00`</td><td>Montag bis Freitag 22:00</td></tr><tr><td>`mon..fri 06..20/2:00`</td><td>Mo–Fr um 06, 08, …, 20 Uhr</td></tr><tr><td>`*/2:00`</td><td>alle 2 Stunden, rund um die Uhr</td></tr><tr><td>`sun 04:00`</td><td>sonntags 04:00</td></tr></tbody></table>

## 3. PBS: Prune, Garbage Collection, Verify

Alles unter **Datastore → (Name) → Prune &amp; GC Jobs** bzw. **Verify Jobs**. Die Reihenfolge ist wichtig: **erst sichern, dann Prune, dann GC**.

<table id="bkmrk-was-schedule-was-es-"><tbody><tr><th>Was</th><th>Schedule</th><th>Was es tut</th></tr><tr><td>Prune-Job</td><td>`01:00`</td><td>Entscheidet nach den Keep-Regeln, welche Backups wegfallen. Gibt selbst **keinen** Platz frei.</td></tr><tr><td>Garbage Collection</td><td>`02:00`</td><td>Löscht Chunks, die kein Backup mehr braucht. Erst damit wird die Platte frei.</td></tr><tr><td>Verify-Job</td><td>`sun 04:00`, Skip Verified an, Re-Verify After 30 Tage</td><td>Liest die Backups und prüft, ob sie lesbar sind.</td></tr></tbody></table>

### Empfohlene Keep-Regeln (Startwerte)

<table id="bkmrk-regel-wert-deckt-ab-"><tbody><tr><th>Regel</th><th>Wert</th><th>deckt ab</th></tr><tr><td>keep-hourly</td><td>12</td><td>bei 2-Stunden-Takt etwa die letzten anderthalb Arbeitstage</td></tr><tr><td>keep-daily</td><td>14</td><td>zwei volle Wochen, jeder Tag einzeln. Fängt „Datei vor zwei Wochen gelöscht“ ab.</td></tr><tr><td>keep-weekly</td><td>4</td><td>weitere vier Wochen im Wochenabstand</td></tr><tr><td>keep-monthly / yearly</td><td>0 (erst einmal)</td><td>erst erhöhen, wenn die Belegung nach zwei Wochen deutlich unter 80 % bleibt</td></tr></tbody></table>

Insgesamt kommt man damit etwa **6 Wochen** zurück. Für Stände über Jahre gehört ein zweites Ziel mit eigener, langer Aufbewahrung dazu. Dafür einen Sync-Job einrichten, z. B. auf einen zweiten PBS oder einen S3-Datastore.

<div class="hinweis" id="bkmrk-prune-z%C3%A4hlt-backups%2C">**Prune zählt Backups, keine Kalendertage.** Nach einer längeren Lücke ohne Backups löscht der Prune deshalb keine alten Stände, nur weil viel Zeit vergangen ist. Bevor du Regeln änderst, kannst du dir mit einem Probelauf ansehen, was wegfallen würde (Konsole auf dem PBS):</div>```
proxmox-backup-debug api create /admin/datastore/DATASTORE/prune \
  --backup-type vm --backup-id 101 --dry-run true \
  --keep-hourly 12 --keep-daily 14 --keep-weekly 4
```

## 4. Überwachung (nicht weglassen)

- **PVE:** Backup-Job → Reiter *Notifications* → Mail bei Fehler.
- **PBS:** Configuration → Notifications → Ziel und Regeln für GC-, Prune-, Verify- und Sync-Fehler.
- **Belegung:** eine Warnung ab 80 %, z. B. per Monitoring (Zabbix, Checkmk usw.) auf den Datastore-Pfad. ZFS wird ab etwa 80 % außerdem spürbar langsamer.

<div class="warnung" id="bkmrk-l%C3%A4uft-der-datastore-">Läuft der Datastore voll, scheitern die Backups, und auf einem vollen Root-Dateisystem schreibt der PBS nicht einmal mehr ins Systemlog. Ohne Benachrichtigung bleibt das wochenlang unbemerkt.</div>