Backup Script für configs & rpool zfs snapshot

bitranox

Member
Oct 11, 2024
75
37
18
Hallo,

hier ein Python-Skript um die Konfigurationsdateien und optional auch einen ZFS-Snapshot des rpool separat zu sichern.

Vielleicht ist es ja für den einen oder anderen hilfreich oder dient als Inspiration.

Features :
  • Pull-basierte Sicherung von Proxmox-VE-Konfigurationsdateien (TAR-Archive über eine SSH-Pipe)
  • Pull-basierte rekursive Snapshots des ZFS-rpool (zfs send -R | gzip)
  • Parallele Ausführung von Backups über mehrere Server hinweg (konfigurierbarer Thread-Pool)
  • SSH-Schlüssel pro Server generieren und bereitstellen (setup-keys-Befehl)
  • Automatische Aufbewahrungsverwaltung (behält die N neuesten Backups pro Server)
  • E-Mail-Benachrichtigungen mit Statuszusammenfassungen nach jedem Backup-Durchlauf
  • Systemd-Timer- und Service-Units für tägliche automatisierte Backups
  • Mehrschichtiges Konfigurationssystem mit Standardwerten, App-, Host-, Benutzer-, .env-, Umgebungsvariablen- und CLI-Überschreibungen
  • Erweiterte CLI-Ausgabe mit Styling durch rich-click
  • Strukturiertes Logging mit lib_log_rich (Konsole, journald, Graylog/GELF)

GitHub:
https://github.com/bitranox/proxmox_srvbackup

PyPI:
https://pypi.org/project/proxmox-srvbackup/
 
  • Like
Reactions: UdoB
Cooles Projekt, danke fürs Teilen! Pull-basiert über SSH ist ein sauberer Ansatz, und dass die Retention gleich mit drin ist, macht es rund. Werd ich mir mal genauer anschauen.
 
  • Like
Reactions: bitranox
Ich habe ein neues Feature hinzugefügt - es wird nun auch die Paketliste gesichert,
Diese Pakete können wieder aus dem Backup installiert werden :


Bash:
# **Reinstall all packages from a selections file:**
# On the target server, set the package selections and install
sudo dpkg --set-selections < packages_selections_proxmox01_2026-03-23_04-30-00.txt
sudo apt-get dselect-upgrade

# **Compare installed packages between two backups:**
diff packages_selections_proxmox01_2026-03-22_04-30-00.txt \
     packages_selections_proxmox01_2026-03-23_04-30-00.txt

# **Check which version of a package was installed:**
grep nginx packages_list_proxmox01_2026-03-23_04-30-00.txt
 
Last edited: