Files
proxmox-snapshot-service/handbuch/docs/nachschlagen/befehle.md
T
duffyduckandClaude Opus 5.5 74be5aee59 Platz vor jedem Snapshot pruefen, bei Mangel alte loeschen, per Mail warnen
Volle Ceph-Pools legen alle VMs darauf lahm. Vor jedem Snapshot gilt jetzt
je Storage des Gastes: frei >= sofortiger Verbrauch + space_min_free
(Vorgabe 20 %). Die Reserve bleibt also auch nach dem Snapshot frei.

Reicht es nicht, wird der aelteste pvesnap-Snapshot des Gastes geloescht und
neu geprueft, bis es reicht. Sind nur noch die neuesten space_keep (Vorgabe
7) uebrig, entfaellt der Snapshot und der naechste Gast kommt dran.

Gezaehlt wird je Gast ueber alle Gruppen, anders als bei der Vorhaltezeit.
Auf dem Testhost haette eine Grenze je Gruppe nie gegriffen: keep_count = 5
liegt unter 7, und 13 GiB steckten in einer Gruppe, die es nicht mehr gibt.

Sofortiger Verbrauch: Dicke ZFS-Zvols muessen ihre Reservierung auch nach
dem Snapshot garantieren, das kostet alles seit dem letzten Snapshot
Geschriebene. Exakt ist das refreservation - usedbyrefreservation; die Werte
kommen per zfs get, bei anderen Nodes per ssh ueber die IP aus dem
Clusterstatus, weil Node-Namen nicht ueberall aufloesen. Dazu kommt der RAM
bei vmstate. --dry-run zeigt die Rechnung je Storage.

Ceph und ZFS geben Platz erst im Hintergrund frei. Deshalb wird nach jedem
Loeschen gewartet, solange der Platz waechst, und erst nach space_settle
(Vorgabe 30s) ohne Zuwachs weitergemacht. Ohne das wurde auf Ceph ein Snapshot
zu viel geloescht. Laesst sich der Platz nicht feststellen, wird nichts
geloescht und der Snapshot trotzdem versucht.

Neu ist [mail]: eine Alarm-Mail je Gruppe und Lauf, wenn ein Snapshot wegen
Platzmangels ausfaellt. STARTTLS oder SSL/TLS mit Zertifikatspruefung, ohne
Rueckfall auf Klartext. Einzurichten im Editor (Taste m) oder von Hand, Test
mit pvesnap mail-test. Liegt ein Passwort in der Datei, setzt der Editor die
Rechte auf 600, auch fuer die .bak.

Das Handbuch beschreibt, wie man Ceph (Ratios) und ZFS (Notreserve) frueher
"voll" sagen laesst und was im Notfall zu tun ist. Ausserdem war
"pvesnap run --dry-run" ueberall falsch: Die Option ist global und muss vor
dem Unterbefehl stehen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 10:27:21 +01:00

245 lines
7.9 KiB
Markdown

# Alle Befehle
## `pvesnap`
Der Snapshot-Dienst und seine Verwaltung.
```bash
pvesnap [globale Optionen] <befehl> [optionen]
```
### Globale Optionen
| Option | Vorgabe | |
|---|---|---|
| `-c`, `--config <pfad>` | `/etc/pvesnap/pvesnap.conf` | andere Konfiguration verwenden (auch über `PVESNAP_CONFIG`) |
| `-n`, `--dry-run` | — | nichts wirklich anlegen oder löschen, nur anzeigen |
| `-v`, `--verbose` | — | ausführliche Ausgabe |
| `-V`, `--version` | — | Version anzeigen |
### Unterbefehle
| Befehl | |
|---|---|
| `status` | Übersicht über Gruppen, letzte und nächste Läufe — **auch die Vorgabe ohne Befehl** |
| `vms` | alle VMs und Container mit den Gruppen, in denen sie stecken |
| `list` | vorhandene pvesnap-Snapshots |
| `check` | Konfiguration prüfen |
| `mail-test` | Test-Mail mit den Einstellungen aus [`[mail]`](konfiguration.md#mail) senden |
| `config` (oder `edit`) | [ncurses-Editor](../sichern/editor.md) |
| `run` | fällige Gruppen jetzt ausführen |
| `prune` | nur aufräumen, nichts anlegen |
| `daemon` | Dienst im Vordergrund starten (für systemd) |
### `run`
| Option | |
|---|---|
| `-g`, `--group <name>` | nur diese Gruppe (mehrfach möglich) |
| `-f`, `--force` | unabhängig vom Zeitplan ausführen |
| `--no-prune` | nicht aufräumen |
```bash
pvesnap run # was fällig ist
pvesnap run --force -g taeglich # diese Gruppe sofort
pvesnap --dry-run run --force # Probelauf
pvesnap run -g taeglich -g monatlich # zwei Gruppen
```
### `prune`
| Option | |
|---|---|
| `-g`, `--group <name>` | nur diese Gruppe |
### `list`
| Option | |
|---|---|
| `-g`, `--group <name>` | nur diese Gruppe |
| `-a`, `--all` | auch fremde und von Hand angelegte Snapshots anzeigen |
---
## `pvesnap-explorer`
```bash
pvesnap-explorer [vmid] [snapshot] [optionen]
```
| Parameter | Vorgabe | |
|---|---|---|
| `vmid` | — | Gast direkt vorwählen |
| `snapshot` | — | Snapshot direkt vorwählen |
| `-l`, `--local <pfad>` | aktuelles Verzeichnis | Startverzeichnis im rechten Fenster |
| `-p`, `--path <pfad>` | — | beliebiges Verzeichnis öffnen, ohne Proxmox zu fragen |
| `--cleanup` | — | hängengebliebene Einbindungen lösen und beenden |
| `-v`, `--verbose` | — | ausführliches Protokoll |
| `-V`, `--version` | — | Version anzeigen |
```bash
pvesnap-explorer # alles auswählen
pvesnap-explorer 101 # Snapshot von VM 101 wählen
pvesnap-explorer 101 auto-taeglich-20260809-023000 # direkt öffnen
pvesnap-explorer --local /srv/restore # rechtes Fenster startet dort
pvesnap-explorer --path /mnt/x # ohne Proxmox
pvesnap-explorer --cleanup # aufräumen
```
Braucht `root`, außer bei `--path`.
---
## `pvesnap-web`
```bash
pvesnap-web [vmid] [snapshot] [optionen]
```
| Parameter | Vorgabe | |
|---|---|---|
| `-P`, `--port <nummer>` | `8823` | Port, auf dem gelauscht wird |
| `-b`, `--bind <adresse>` | `0.0.0.0` | Netzwerkadresse; `127.0.0.1` = nur lokal |
| `-a`, `--auth pve\|token\|none` | `pve` | Anmeldeart |
| `--require-privilege <recht>` | `VM.Snapshot` | nötiges Recht auf dem Gast |
| `--allow-user <user@realm>` | — | dieser Benutzer darf alles (mehrfach möglich) |
| `-t`, `--token <schlüssel>` | zufällig | Zugangsschlüssel selbst vorgeben |
| `--no-token` | — | Kurzform für `--auth none` |
| `-p`, `--path <verzeichnis>` | — | beliebiges Verzeichnis statt eines Snapshots |
| `--cleanup` | — | hängengebliebene Einbindungen lösen und beenden |
| `-v`, `--verbose` | — | ausführliches Protokoll |
| `-V`, `--version` | — | Version anzeigen |
Als Dienst stehen dieselben Parameter in `/etc/pvesnap/web.conf`:
```
PVESNAP_WEB_ARGS=--bind 0.0.0.0 --port 8823 --auth pve
```
---
## `pvesnap-recovery`
```bash
pvesnap-recovery # ncurses-Oberfläche
pvesnap-recovery <befehl> [optionen]
```
### Unterbefehle
| Befehl | |
|---|---|
| `live <VMID> [snapshot]` | abgeschottet starten (ohne Snapshot: der neueste) |
| `recover <VMID> [snapshot]` | mit Netzwerk und gleicher Identität starten |
| `list` | vorhandene Wiederherstellungen anzeigen |
| `start <VMID>` | starten |
| `stop <VMID>` | herunterfahren |
| `console <VMID>` | noVNC-Adresse ausgeben |
| `spice <VMID>` | Verbindungsdatei für `remote-viewer` |
| `flatten <VMID>` | [vom Quell-Snapshot lösen](../wiederherstellen/loesen.md) |
| `cleanup` | [aufräumen: Klone ohne Gast und geschützte Snapshots ohne Klon](../wiederherstellen/verwerfen.md#cleanup) |
| `destroy <VMID>` | [restlos verwerfen](../wiederherstellen/verwerfen.md) |
### Optionen von `live` und `recover`
| Parameter | |
|---|---|
| `--newid <ID>` | VMID der neuen Maschine (Vorgabe: nächste freie) |
| `--node <name>` | auf welchem Node sie laufen soll |
| `--net none\|down\|on` | keine Karte / Karte ohne Leitung / voll am Netz |
| `--resume` / `--no-resume` | Arbeitsspeicher laden bzw. bewusst kalt starten |
| `--transfer <name>` | [Austauschlaufwerk](../wiederherstellen/transfer.md) anhängen (mehrfach möglich) |
| `--spice` | SPICE-Anzeige (`vga: qxl`), zusätzlich zu noVNC |
| `--usb <n>` | so viele USB-Weiterleitungen über SPICE (schaltet `--spice` mit ein) |
| `--iso <volid>` | Abbild als CD einlegen, z. B. `local:iso/virtio-win.iso` |
| `--memory <MB>` | abweichender Arbeitsspeicher (nicht mit `--resume`) |
| `--cores <n>` | abweichende Kernzahl (nicht mit `--resume`) |
| `--name <name>` | Name der neuen Maschine |
| `--keep-binds` | durchgereichte Host-Verzeichnisse des Originals übernehmen |
| `--no-start` | nur einrichten, nicht starten |
| `-y`, `--yes` | Routinefragen überspringen |
| `--force` | auch anlegen, wenn das Original noch läuft |
!!! danger "`-y` deckt `--force` nicht ab"
`recover` mit `-y` bei laufendem Original wird **abgewiesen** (Rückgabewert
2). Siehe [Mit Netzwerk](../wiederherstellen/netzwerk.md).
### Optionen der übrigen Befehle
| Befehl | Option | |
|---|---|---|
| `spice` | `-o <datei>` | in eine Datei schreiben statt auf die Standardausgabe |
| `flatten` | `--force` | auch bei knappem Speicherplatz |
| `cleanup` | `--all` | auch Datenträger ohne Elternteil |
| `cleanup`, `destroy`, `flatten` | `-y`, `--yes` | ohne Rückfrage |
### Beispiele
```bash
# Kurz hineinschauen, mit Werkzeugen
pvesnap-recovery live 101 --transfer werkzeuge
# Ein bestimmter Snapshot, kalt gestartet, mit Dongle
pvesnap-recovery live 105 auto-taeglich-20260809-023000 --usb 2 --no-resume
# Ernstfall: Original steht, Wiederherstellung übernimmt
qm stop 101
pvesnap-recovery recover 101 --newid 9101
pvesnap-recovery flatten 9101
# Verbindungsdatei für den Arbeitsplatz
ssh root@pve2 pvesnap-recovery spice 9104 > vm.vv && remote-viewer vm.vv
# Aufräumen
pvesnap-recovery destroy 9101
pvesnap-recovery cleanup
```
---
## systemd
```bash
systemctl status pvesnap
systemctl reload pvesnap # Konfiguration neu einlesen (SIGHUP)
systemctl restart pvesnap
journalctl -u pvesnap -f
systemctl status pvesnap-web
systemctl restart pvesnap-web # nach Änderungen in web.conf
systemctl stop pvesnap-web
journalctl -u pvesnap-web -f
```
---
## Installation
```bash
./install.sh [optionen]
./uninstall.sh [--purge]
```
| Option | |
|---|---|
| `--with-webexplorer` | Web-Oberfläche als Dienst einrichten (erfordert `--port`) |
| `--port <nummer>` | Port der Web-Oberfläche |
| `--bind <adresse>` | Adresse, auf der sie lauscht (Vorgabe `0.0.0.0`) |
| `--no-start` | installieren, aber Dienste nicht starten |
| `--no-install-deps` | `parted` und `exfatprogs` nicht nachinstallieren |
| `--force` | auch ohne erkanntes Proxmox VE installieren |
| `--help` | Übersicht |
---
## Hilfswerkzeug
```bash
tools/get-guest-tools.sh <iso-storage>
```
Holt die virtio-win-Treiber auf einen ISO-Storage — für Windows-Gäste, die
Treiber brauchen, oder für Zwischenablage und Mauszeiger unter
[SPICE](../wiederherstellen/dongle.md).