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>
5.3 KiB
Installation
Der übliche Weg
Auf dem Proxmox-Host als root:
git clone <dieses-repo> pvesnap && cd pvesnap
./install.sh # nur der Snapshot-Dienst
./install.sh --with-webexplorer --port 8823 # zusätzlich die Web-Oberfläche
./install.sh --help # alle Optionen
Das Skript prüft zuerst, ob es wirklich auf einem Proxmox-VE-Host läuft, und
bricht sonst ab. Wer es trotzdem will — etwa zum Ausprobieren in einer VM —
nimmt --force.
Optionen
| 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 |
fehlende Werkzeuge (parted, exfatprogs) nicht nachinstallieren |
--force |
auch ohne erkanntes Proxmox VE installieren |
--port hat bewusst keine Vorgabe. Es gibt keine Portnummer, die auf jedem
Host frei ist, und ein stillschweigend gewählter Port wäre genau die Art
Überraschung, die man auf einem Hypervisor nicht braucht.
Was installiert wird
| Pfad | Inhalt |
|---|---|
/usr/lib/pvesnap/ |
Programmcode |
/usr/local/bin/pvesnap |
Dienst und Konfiguration |
/usr/local/bin/pvesnap-explorer |
Zwei-Fenster-Explorer |
/usr/local/bin/pvesnap-web |
Web-Oberfläche |
/usr/local/bin/pvesnap-recovery |
Snapshot als Maschine starten |
/etc/pvesnap/pvesnap.conf |
Konfiguration — bei Updates nicht überschrieben |
/etc/pvesnap/web.conf |
Port und Anmeldeart der Web-Oberfläche |
/var/lib/pvesnap/state.json |
merkt sich die letzten Läufe |
/var/lib/pvesnap/transfer/ |
Austauschlaufwerke |
/etc/systemd/system/pvesnap.service |
Unit des Snapshot-Dienstes |
/etc/systemd/system/pvesnap-web.service |
Unit der Web-Oberfläche |
Zusätzliche Pakete
Zwei Werkzeuge werden bei Bedarf nachinstalliert:
| Paket | wofür |
|---|---|
parted |
Partitionstabelle der Austauschlaufwerke |
exfatprogs |
deren Dateisystem (exFAT) |
Ohne sie funktioniert alles außer den Austauschlaufwerken. Mit
--no-install-deps bleibt das System unangetastet; die Laufwerksverwaltung
sagt dann beim Öffnen, was fehlt.
!!! info "Warum kein ntfs-3g?"
exFAT reicht: Windows und Linux lesen und schreiben es von Haus aus, es
kennt keine 4-GB-Grenze pro Datei und speichert keine Besitzrechte — was
beim Austausch zwischen Systemen ein Vorteil ist, kein Mangel. Mehr dazu
unter [Austauschlaufwerke](wiederherstellen/transfer.md#warum-exfat).
Aktualisieren
cd pvesnap
git pull
./install.sh --with-webexplorer --port 8823
Dieselben Parameter wie beim ersten Mal — sonst wird die Web-Oberfläche nicht wieder mit eingerichtet.
Die Konfiguration bleibt. /etc/pvesnap/pvesnap.conf wird nie
überschrieben.
Eine laufende Web-Oberfläche wird sauber angehalten, bevor der Code ausgetauscht wird, und danach wieder gestartet. Das ist wichtig, weil sie möglicherweise noch einen Snapshot eingebunden hat — den Prozess einfach unter den Füßen wegzuziehen würde eine Einbindung zurücklassen.
Sitzt ein fremder Prozess auf dem Port, gibt es eine Warnung samt PID, aber kein automatisches Beenden. Es könnte schließlich etwas ganz anderes sein.
Deinstallation
./uninstall.sh # Programm und Dienst entfernen, Konfiguration bleibt
./uninstall.sh --purge # zusätzlich /etc/pvesnap und /var/lib/pvesnap löschen
!!! danger "Was --purge mitnimmt"
Auch die **Austauschlaufwerke** unter `/var/lib/pvesnap/transfer/`. Was
dort an Werkzeugen und Dumps liegt, ist danach weg. Ohne `--purge` bleibt
alles liegen.
Bereits angelegte Snapshots werden nie angerührt — weder beim Entfernen noch beim Aktualisieren. Sie gehören Proxmox, nicht pvesnap.
Laufen noch Wiederherstellungen, warnt
uninstall.sh davor. Die sollten vorher mit pvesnap-recovery destroy
verworfen werden, sonst bleiben Klone und geschützte Snapshots liegen.
Die systemd-Unit
Ein Punkt, der später viel Zeit sparen kann: Die mitgelieferte Unit enthält bewusst keine Sandbox-Optionen.
# NICHT in die Unit aufnehmen:
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes
Der Grund ist unangenehm indirekt. pvesh führt die Proxmox-API im eigenen
Prozess aus — der Snapshot-Task ist also ein Kindprozess von pvesnap und erbt
dessen Einschränkungen. ProtectSystem= hängt /etc schreibgeschützt ein, und
pmxcfs legt seine Sperren als Verzeichnisse unter /etc/pve/priv/lock/ an. Das
mkdir scheitert, Proxmox versucht es erfolglos weiter — und meldet am Ende
keinen Rechtefehler, sondern:
TASK ERROR: cfs-lock 'storage-data' error: got lock request timeout
Man sucht dann tagelang am Storage. pvesnap check weist von sich aus darauf
hin; mehr dazu unter Fehlersuche.
Nach der Installation
systemctl status pvesnap # läuft der Dienst?
pvesnap check # ist die Konfiguration stimmig?
journalctl -u pvesnap -f # was tut er gerade?
Weiter geht es beim Schnellstart oder direkt im Kapitel Sichern.