Files
duffyduckandClaude Opus 5 59e7224297 Handbuch auf MkDocs-Basis, mit Bildschirmfotos aus dem Programm
26 Kapitel in vier Teilen, in der Reihenfolge, in der man sie braucht:
erst sichern, dann Dateien holen, dann ganze Maschinen wiederherstellen,
dahinter der Nachschlagteil.

Gebaut wird mit MkDocs + Material. Bewusst ohne Netzabhaengigkeiten:
keine Schriften vom CDN (font: false), Volltextsuche mit deutschem
Stemming liegt neben den Seiten. Im Notfall steht vielleicht das halbe
Netz - dann nuetzt eine Doku im Internet nichts.

  handbuch/bauen.sh              baut handbuch/site/
  handbuch/bauen.sh ansehen      Vorschau auf 127.0.0.1:8000

install.sh nimmt das gebaute Handbuch mit nach
/usr/share/doc/pvesnap/handbuch/ - falls es vorliegt. Auf dem Host selbst
wird nichts gebaut, mkdocs gehoert nicht auf einen Hypervisor.

Die 28 Bildschirmfotos sind nicht abfotografiert, sondern erzeugt: Der
echte Programmcode laeuft in einem Pseudo-Terminal gegen einen erfundenen
Proxmox-Host (Attrappen fuer pvesh, perl und rbd), pyte baut den Bildschirm
nach, heraus faellt ein SVG. Damit stimmen sie garantiert mit dem Programm
ueberein, sind reproduzierbar und enthalten keine echten Daten. Die
Werkstatt dafuer liegt unter handbuch/werkstatt/ samt LIESMICH.md.

Nebenbei: die Schlussmeldung von install.sh warb noch mit --exchange,
das mit dem eingebauten Austauschlaufwerk weggefallen ist.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 12:39:30 +02:00

5.2 KiB

Welche Gäste?

Eine Gruppe sucht sich ihre Gäste über eine oder mehrere Regeln. Dabei gilt:

Alle Einschluss-Regeln wirken als ODER — wer eine davon erfüllt, ist dabei.

Alle Ausschluss-Regeln gewinnen immer — auch gegen all = yes.

all = yes                     # alle VMs und Container
vmids = 100,101,105-110       # nach ID, auch Bereiche
names = web-*, db-0?          # nach Name, mit Platzhaltern
tags = produktion, wichtig    # nach Proxmox-Tag
pools = Kunden                # nach Proxmox-Pool
types = qemu                  # nur VMs (lxc = nur Container; leer = beides)

exclude_vmids = 999
exclude_names = *-test
exclude_tags = nosnap

Kontrollieren lässt sich das Ergebnis an zwei Stellen: unten in der Gruppenmaske („Trifft aktuell zu auf …") und mit pvesnap vms.


Tags

Der empfohlene Weg. Die Auswahl steht dann bei der VM, nicht in der Konfiguration — und eine neue Maschine ist mit einem Klick dabei, ohne dass jemand pvesnap.conf anfassen muss.

tags = produktion

In Proxmox setzen:

qm set 101 --tags produktion,datenbank
pct set 110 --tags produktion

Oder in der Oberfläche unter VM → Optionen → Tags.

Groß- und Kleinschreibung ist egal; pvesnap vergleicht in Kleinbuchstaben. Mehrere Tags an einer VM trennt Proxmox mit ; oder , — beides wird gelesen.

!!! tip "Ein Tag je Zeitplan"

Bewährt hat sich, die Tags nach dem Sicherungsrhythmus zu benennen und
nicht nach der Funktion:

```ini
[group:stuendlich]
tags = stuendlich

[group:taeglich]
tags = produktion
```

Dann sieht man in der Proxmox-Oberfläche an jeder VM sofort, wie oft sie
gesichert wird — ohne die Konfiguration zu öffnen.

VMIDs

vmids = 100,101,105-110,200

Einzelne IDs und Bereiche, durch Komma getrennt. Am bequemsten über die VM-Auswahl im Editor.

Präzise, aber pflegeintensiv: Jede neue Maschine muss von Hand nachgetragen werden. Für kleine, feste Zusammenstellungen in Ordnung, für alles Wachsende sind Tags besser.


Namensmuster

names = web-*, db-0?
Zeichen
* beliebig viele Zeichen
? genau ein Zeichen
[abc] eines dieser Zeichen

Praktisch bei sauberer Namenskonvention (web-01, web-02, db-01), gefährlich ohne: Eine VM, die jemand web-test-alt nennt, fällt in web-* hinein. Dagegen hilft ein exclude_names = *-test.


Pools

pools = Kunden

Nach dem Proxmox-Pool. Sinnvoll, wenn die Pools ohnehin nach Kunde oder Abteilung geschnitten sind — dann sichert eine Gruppe genau einen Mandanten.


Gasttyp

types = qemu        # nur virtuelle Maschinen
types = lxc         # nur Container
types =             # beides (Vorgabe)

Nützlich in Verbindung mit vmstate = yes, das ohnehin nur für QEMU gilt: Eine Gruppe mit RAM-Sicherung für die VMs, eine ohne für die Container.


Ausschlüsse

exclude_vmids = 999
exclude_names = *-test, temp-*
exclude_tags = nosnap, pvesnap-recovery

Ausschlüsse schlagen alles. Auch all = yes.

!!! success "Zwei Ausschlüsse, die in jede all-Gruppe gehören"

```ini
exclude_tags = nosnap, pvesnap-recovery
```

**`nosnap`** ist der Notausgang: Wer eine einzelne Maschine aus der
Sicherung nehmen will, setzt ihr das Tag — ohne die Konfiguration
anzufassen.

**`pvesnap-recovery`** trägt jede laufende
[Wiederherstellung](../wiederherstellen/index.md). Ohne den Ausschluss
bekämen diese kurzlebigen Maschinen eigene Snapshots — die dann wiederum
verhindern, dass sie sich sauber verwerfen lassen.

Mehrere Regeln kombiniert

[group:taeglich]
tags = produktion
vmids = 300
exclude_names = *-test
exclude_tags = nosnap

Gelesen: alles mit dem Tag produktion oder VM 300, aber nichts, was auf -test endet oder das Tag nosnap trägt.


Gestoppte Gäste

skip_stopped = yes

Übergeht Gäste, die gerade aus sind. Vorgabe ist no — auch von einer gestoppten Maschine wird ein Snapshot angelegt.

Beides ist vertretbar:

skip_stopped = no Der Stand ist gesichert, auch wenn die VM länger aus ist. Kostet bei kurzen Intervallen viele identische Snapshots.
skip_stopped = yes Nur laufende Maschinen. Passt zu stündlichen Gruppen, spart Platz — aber eine über Wochen abgeschaltete VM bekommt gar nichts mehr.

!!! note "Der Mischbetrieb"

Eine stündliche Gruppe mit `skip_stopped = yes`, eine monatliche mit
`skip_stopped = no`. Dann bekommt jede Maschine mindestens den monatlichen
Stand, und die laufenden zusätzlich die feine Auflösung.

Nachsehen, was herauskommt

pvesnap vms
VMID    Name                      Status    Gruppen
100     web01                     running   stuendlich, taeglich, monatlich
101     db01                      running   stuendlich, taeglich, monatlich
120     build-test                stopped   (keine Gruppe)

Dasselbe im Editor unter Taste ++v++:

Übersicht: welche VM in welcher Gruppe