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.

Bestseller Nr. 1
Synology DS220J 2 Bay Desktop-NAS-Gehäuse
Synology DS220J 2 Bay Desktop-NAS-Gehäuse
StreamingIntegrierter Medienserver für das Streaming von Multimedia-Inhalten
163,95 EUR

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}