Das Proxmox Host Backup ist genauso wichtig, wie die Backups wie von den eigentlichen virtuellen Maschinen. Wenn es zu dem Fall kommt, dass der Host selber ausfällt, dann sind nicht nur die Hüllen von den virtuellen Maschinen weg, sondern auch jegliche Einstellungen in eurer Proxmox Umgebung.
Eventuell habt Ihr spezielle Einstellungen vorgenommen, spezielle Backup oder HA Regeln. Alle diese Regeln sind nun weg. Also müssen wir uns bemühen, dass auch diese Einstellungen schnell und einfach gesichert werden.
Proxmox VE Host Backup mit Borg Backup
Borg Backup ist eine kostenlose Software, welche für sehr viele Betriebssysteme verfügbar ist, unteranderem natürlich Linux. Mir persönlich gefallen die Effizienten Funktionen, wie z.B. Deduplication & Compression sehr gut. Es spart besonders für das „lästige“ Backup enorm viel Speicherplatz. Beide Funktionen in Kombination erreichen gerne mal schnell Werte von bis zu 9:1, je nachdem was Ihr so an Daten in euer Backup schiebt.
Kommen wir zum eigentlichen, was sollte ich von meinem Proxmox Host alles speichern?
/etc/pve
/etc/network
/etc/hosts
/etc/passwd
Der Template Ordner wo eure Templates und ISOs liegen?
Grundsätzlich reicht es wenn Ihr den Ordner /etc/pve speichert, denn dort liegen alle Konfigurationen für den Proxmox VE. Wenn Ihr noch zusätzlich weitere Informationen speichern möchte wie ich hier, braucht ihr diese Ordner nur mit in euer Backup aufnehmen. Aber wie das jetzt wirklich geht kommt im folgenden Abschnitt.
Manuelles Borg Backup – Schritt für Schritt
Borg Backup benötigt für die gewisse Intelligenz sein eigenes Repository. Das heißt nichts anderes, dass Ihr das Backup einmalig auf einem Pfad eurer Wahl initiieren müsst.
Wo legt man das Backup hin? Natürlich auf einen entfernten Speicher wie z.B. ein NFS oder SMB/Cifs Share. Ein iSCSI Blockdevice eignet sich natürlich ebenfall. Ein USB-Stick tut es auch, aber dieser Steckt ja wieder im System selber, kann also genauso ausfallen oder betroffen sein.
#Damit wird das Borg Backupauf dem gewünschten Pfad initialisiert. (Es wird nach einem Passwort verlangt) borg init --encryption=repokey /pfad/zum/backup_ordner
Mit dem oben stehenden Befehl wird das Backup initialisiert und kann ab sofort genutzt werden. Diesen Befehl braucht ihr nur einmalig.
Ein Backup wird nun wie folgt durchgeführt.
borg create --stats --progress --compression=lz4 /pfad/zum/backup_ordner::backup1 /etc/pve /etc/network /etc/hosts
Der hier stehende Befehl macht folgendes. Mit Stats und Progress bekommt Ihr eine Anzeige mit Informationen zum Backup.
Der Pfad wird wieder angegeben und das „::backup1“ benennt das hier erstellte Backup „backup1“. Beim nächsten Backup muss das ein anderer Name sein.
Zu guter Letzt wird der oder die Pfade angegeben, welche ins Backup einfließen sollen. Da könnt ihr gerne weitere Ordner und Pfade mit einem Leerzeichen getrennt hinzufügen.
Alle weiteren Backups müssen unter einem anderen Namen gespeichert werden. Das Deduplizieren und Komprimieren passiert dabei automatisch.
Automatisches Proxmox Borg Backup Skript
Quelle: borgbackup.org
#!/bin/sh export BORG_REPO=/opt/Backup # Euer Passwort muss hier hinterlegt werden. export BORG_PASSPHRASE='Was5kGANZ5jgop54KOMPLIZIERTES' info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; } trap 'echo $( date ) Backup unterbrochen >&2; exit 2' INT TERM info "Start backup" # Hier wird das Backup erstellt, passt das so an wie Ihr das gerne haben möchtet borg create \ --stats \ --compression lz4 \ ::'{hostname}-{now}' \ /etc/pve \ /etc/network/interfaces backup_exit=$? info "Loeschen von alten Backups" # Automatisches löschen von alten Backups borg prune \ --prefix '{hostname}-' \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6 prune_exit=$? info "schroederdennis.de" # Informationen ob das Backup geklappt hat. global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit )) if [ ${global_exit} -eq 0 ]; then info "Backup and Prune finished successfully" elif [ ${global_exit} -eq 1 ]; then info "Backup and/or Prune finished with warnings" else info "Backup and/or Prune finished with errors" fi exit ${global_exit}
24. Mai 2021 um 21:44 Uhr
Wirf mal einen Blick auf das Skript vzborg.
Da bin ich vor einer Weile darüber gestolpert. Es ist ein Wrapper der vzdump und borg miteinander verheiratet.
25. Februar 2022 um 09:18 Uhr
Hi,
zunächst vielen Dank für deine guten Videos und Guides – top Job und (für mich) einiges nützliches dabei, so auch dieses Thema hier.
Dazu eine Frage: du sagst im Vid, dass Borg auch auf dem remote System laufen muss.
Wenn ich Borg auf meinem PVE Host laufen lasse und ein Backup in Richtung meines NAS mache, das als NFS LW gemountet ist, kann ich mir nach einem Testlauf den Backup im Remotepfad per borg list /pfad/zum/backup/ auch tatsächlich anzeigen lassen.
Es scheint also was dort zu sein. Die Ausgabe des Backup Jobs zuvor sieht auch aus wie bei dir im Video.
Warum genau muss/sollte Borg jetzt auch auf dem remote System laufen?
Für einen etwaigen Restore ja eher nicht, denn davon rätst du ja am Ende explizit ab und das man die Backups lediglich als Basis für eine Neukonfig im Fall der Fälle hernehmen sollte.
Danke!
20. Februar 2023 um 05:30 Uhr
Hi Stefan,
vielleicht etwas spät die Antwort. Aber wenn du dir ein nfs-Share einbindest, dann ist dies wie ein lokales Backup. Also vergleichbar mit einer externen Festplatte etc.
Beste Grüße
26. Januar 2024 um 13:37 Uhr
Hallo Dennis,
danke für ein weiteres und gutes Video. Ich konnte alles nachstellen und es klappt auch fast alles.
Wenn ich allerdings die beiden Dateien /etc/hosts und /etc/passwd mit in das Backup aufnehme, erhalte ich „permission denied“.
Zum Hintergrund: ich sichere auf eine Sysnology. Dort „darf“ ich micht jedoch via ssh nicht mit dem User root anmelden, deswegen habe ich den admin user der Synoloy genommen. Ist das das Problem? Und wenn ja, wie kann ich das lösen?
Die Rechte der beiden Dateien auf dem Proxmox Host lauten:
-rw-r–r– 1 root root 308 Dec 6 12:24 /etc/hosts
-rw-r–r– 1 root root 1472 Jan 22 10:43 /etc/passwd
Danke im voraus,
Wolfgang
26. Januar 2024 um 14:35 Uhr
Hi Dennis,
ich konnte das Problem selber lösen. Im Script hat das „\“ hinter den entsrpechenden Einträgen gefehlt.
Gruß Wolfgang
16. November 2024 um 18:27 Uhr
Letzter Eintrag zu diesem Thema hier vom 26.1.24 bei GITHUB fragt der letzte Post aud Oktober 2024 ob das Projekt noch lebt.
Ich habe das Ding heute entdeckt und frage mich ähnliches wird das Script noch weiter entwickelt?
Wie sind eure Erfahrungen damit?
Sehr oft genutzt scheint es nicht zu sein.