Proxmox Backup Client auf Raspberry Pi installieren

Wie kann man eigentlich einzelne Ordner von seinem Raspberry Pi sichern, wenn man als Sicherungsziel Proxmox Backup Server verwendet? Dieser Frage gehen wir in dieser Anleitung auf dem Grund.

Hinweis: Die Anleitung wurde entsprechend aktueller Vorgaben erstellt. Bitte schaut selbst, ob im Github-Repository etwas anders ist. Die Anleitung kann natürlich nur eine Momentaufnahme darstellen. Hinweise gerne in die Kommentare.

Wer den Proxmox Backup Server bereits auf einem Raspberry Pi verwendet, dem werden die Schritte aus der Anleitung Proxmox Backup Server auf Raspberry Pi installieren bereits bekannt sein.

Es wird wieder das Compiler Skript aus dem Github Repository https://github.com/wofferl/proxmox-backup-arm64 von Wofferl verwendet. Diesmal allerdings nur die Client Variante.

Für das Kompilieren benötigen wir einen Raspberry Pi 4 mit am besten 8 GB RAM, Minimum 4 GB RAM, mindestens 32 GB Micro-SD-Karte. Die deb-Datei kann dann entsprechend einfach auf dem benötigten Raspberry Pi gespeichert werden, welcher dann auch weniger RAM haben kann. Man kann sich allerdings auch die vorkompilierte deb-Datei herunterladen.

Vorbereitung

Zunächst stellt man die Grundinstallation mit Raspberry Pi OS auf einer SD-Karte und die Aktualisierungen fertig, seht hierzu gerne in dem Post Raspberry Pi: Getting Started/Erste Schritte (Raspbian / Raspberry Pi OS) rein.
Achtung!!: Verwendet das 64-Bit Image vom Raspberry Pi OS um die gesamte Performance und den kompletten Speicher verwenden zu können.

Installation und Kompilierung vom Proxmox Backup Client

Kompilierung von PBC

Wenn die Grundinstallation erledigt ist, müssen vorher einige Programme auf dem Pi installiert werden. Führt nachfolgend die Befehle aus:

sudo apt-get install -y --no-install-recommends \
	build-essential curl ca-certificates sudo git lintian fakeroot \
	pkg-config libudev-dev libssl-dev libapt-pkg-dev libclang-dev \
	libpam0g-dev
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -sSf | sh -s
source ~/.cargo/env

Für die Rust-Installation wählt man dann einfach mit [1] die Standardinstallation aus.

sudo reboot

Nach dem Reboot laden wir nun das Github Repository im Homeverzeichnis in das Unterverzeichnis „pbs“ herunter.

git clone https://github.com/wofferl/proxmox-backup-arm64.git ./pbs/

Anschließend gehen wir in den Ordner „pbs“ und führen die Kompilierung nur für den Client aus.

cd pbs/
./build.sh client

Die Kompilierung benötigt dann etwas Zeit und kann auch mal an einem Punkt für mehrere Minuten stehen bleiben. Bei mir hat es um die 40 Minuten gedauert. Wenn die Kompilierung fertig ist, sind alle ARM Pakete in dem Ordner „./pbs/packages“ abgelegt.

Download der vorkompilierten Debian-Pakete

Als Alternative kann man die entsprechend vorkompilierten Debian Pakete herunterladen.

Dazu wird dennoch das Github Repository wie bekannt heruntergeladen.

git clone https://github.com/wofferl/proxmox-backup-arm64.git ./pbs/

Anschließend gehen wir in den Ordner „pbs“ und führen einen Download der aktuellsten Version aus.

cd pbs/
./build.sh download

Sobald der Download fertig ist, findet man unter „./pbs/packages“ die Debian-Pakete. Man spart sich damit die Zeit für die Kompilierung, muss dann allerdings darauf hoffen, dass die vorgefertigten Debian-Pakete alle in Ordnung sind. Es gab aber bei meinem Test mit einem Raspberry Pi 4, 8 GB RAM keine Probleme.

Installation PBC

Wenn man mit einem der beiden Möglichkeiten die Debian-Pakete in „packages“ hat, gehen wir nun hinein und führen mit dem apt Befehl die Installation des erstellten Debian Paketes aus.

cd packages
sudo apt install \
  ./proxmox-backup-client_*_arm64.deb
sudo reboot

Danach ist der Befehl proxmox-backup-client verwendbar.

Backup erstellen

Manuelles Backup erstellen

Wie erstellen wir nun ein Backup für einen Ordner? Wir benutzen folgenden Befehl:

proxmox-backup-client backup {Dateiname}.pxar:{Pfad-des-zu-sichernden-Ordners} \ 
--repository {Hostname-PBS}:{Datastore} --change-detection-mode=metadata
ArgumentBeschreibung
backupGibt dem Befehl mit, dass nun ein Backup erstellt werden soll.
{Dateiname}.pxar:/{Pfad-des-zu-sichernden-Ordners}Es wird ein Archiv {Dateiname}.pxar vom {Pfad-des-zu-sichernden-Ordners} erstellt
–repository {Hostname-PBS}:{Datastore}Gibt das Repository im Format {Server}:{Datastore} an. Vorsicht, der Datastore ist case-sensitive.
–change-detection-mode=metadatametadata ist wie ein kontinuierliches inkrementelles Backup zu betrachten. Es werden zwei Archive, ein mpxar für die Metadaten und ein ppxar für die Daten, erstellt. Beim Erstellen des Backups werden die vorherigen Backup-Metadaten geprüft und nur geänderte Daten neu gesichert.
data ist wie ein Vollbackup zu betrachten. Wie „metadata“ werden die Metadaten und die reinen Daten in zwei verschiedenen Archiven gespeichert. Es werden allerdings alle Daten gesichert, ohne in den vorherigen Metadaten nach unveränderten Daten zu suchen, welche nicht gesichert werden müssen.
legacy wäre auch wie ein vollwertiges Vollbackup zu betrachten. Alle Daten und Metadaten werden neu in ein einziges pxar-Archiv gesichert. Es wird nicht mit vorherigen Sicherungen verglichen, ob Daten sich geändert haben und daher nicht nochmal gesichert werden müssen.

Es wird dann nach dem Passwort von dem Standardbenutzer „root@pam“ des Proxmox Backup Servers gefragt. Bei der ersten Ausführung muss dann noch der Fingerprint des Servers mit [Y] bestätigt werden. Die Sicherung beginnt und man bekommt einen Sicherungsverlauf angezeigt.

Im Proxmox Backup Server sieht man nach Fertigstellung des Backups den gesicherten Host und das dazugehörige Backup.

Ist Change Detection Mode „metadata“ überhaupt sicher?

Allgemein kann man ruhig auf „metadata“ setzen. Bisher hatte ich kein Sicherungsproblem, auch wenn mit der Methode die Wahrscheinlichkeit am höchsten ist, wenn auch gering. Im Endeffekt werden beim Backup Hashes der Daten erstellt, welche als Chunks auf dem Backupserver gesichert werden. Die Chunks werden in der eigentlichen Sicherung referenziert. Dadurch hat man dann den Deduplikationseffekt, da diese Chunks bei unveränderten Daten einfach im neuen Backup ebenfalls referenziert werden.

Wenn nun eine ältere Sicherung entfernt wird, wird erstmal nur der Eintrag aus der Liste entfernt, die Chunks bleiben erhalten. Die Garbage Collection auf dem Proxmox Backup Server ist dann dafür zuständig, zu prüfen, welche Chunks von den anderen Sicherungseinträgen noch verwendet werden und die zu löschen, welche nicht mehr benötigt werden. Daher ist es auch so wichtig, die Garbage Collection auf dem PBS mindestens einmal im Monat automatisch durchlaufen zu lassen.

Automatische Backups erstellen

Um automatische Backups zu erstellen, wird ein Skript benötigt, welches immer zur gewünschten Zeit als CronJob ausgeführt wird. Dafür werden auch ein paar Environment Variablen gesetzt. Auch das Passwort. Allerdings wollen wir nicht unbedingt das Root Passwort als Klartext in das Skript schreiben. Daher wird als erstes ein Backup-User im Proxmox Backup Server erstellt.

Dazu geht man auf seinen PBS und geht unter „Configuration“ auf „Access Control“. Dort klickt man im „User Management“ auf „Add“ und erstellt einen neuen Benutzer.

Als nächstes gehen wir auf den „API Token“ Reiter und erstellen für den neuen Benutzer einen API Token. Der Token wird einem direkt angezeigt und sollte entsprechend sicher verwahrt werden. Wie der Hinweis mitteilt, kann der Secret nicht mehr angezeigt werden. Auch die Token ID ist wichtig!

Anschließend werden wir dem Token und dem Benutzer noch die Backup-Berechtigung für den Datastore übergeben. Dazu muss man auf den Reiter „Permission“ gehen und über „Add“ die Token-Berechtigung erstellen. Im Dialogfeld „Path“ wählt man dann den Datastore aus, denn man berechtigen möchte, bei mir „/datastore/store_backup“. Als nächstes den eben erstellten API-Token auswählen und als Role „DatastoreBackup“. Einmal auf „Add“ und die Berechtigung ist hinzugefügt. Das gleiche muss mit dem Benutzer direkt passieren.

Nun erstellen wir ein kleines Bash-Skript mit dem Befehl nano backup.sh auf dem Raspberry Pi mit folgendem Inhalt:

#! /bin/bash
export PBS_REPOSITORY="Backup@pbs!Backup_User_Token@pbs:store_backup"
export PBS_PASSWORD="c3bb3780-8922-4810-b650-a9a915695591"
export PBS_FINGERPRINT="4d:5c:49:56:b4:95:06:90:c0:39:bd:61:ab:45:f9:3e:e6:01:27:09:ce:72:84:db:9a:69:54:41:e4:1f:45:5c"

proxmox-backup-client backup rasptest.pxar:/home/pu/backup --change-detection-mode=metadata
Environment VariabelBeschreibung
PBS_REPOSITORY=“{Token-ID}@{Hostname-PBS}:{Datastore}“Gibt das Repository mit Übergabe der Token-ID an.
PBS_PASSWORD=“{Token-Secret}“Beinhaltet den Token-Secret zur angegebenen Token-ID.
PBS_FINGERPRINT=“{PBS-Fingerprint}“Beinhaltet den Fingerprint des Proxmox Backup Servers.

Anschließend mit chmod +x backup.sh das Skript noch ausführbar machen. Mit ./backup.sh kann man nun das Skript ausführen und testen, ob alles funktioniert.

Sollte der Fehler „Error: missing permissions ‚Datastore.Backup‘ on ‚/datastore/store_backup'“ auftauchen, stimmt die Token- oder Benutzerberechtigung auf dem genannten Datastore nicht.

Wenn ihr bereits mit dem manuellen Befehl ein Backup erstellt habt, wird ggf. folgender Fehler auftauchen: „Error: backup owner check failed (Backup@pbs!Backup_User_Token != root@pam)“
Achtet bei dem Fehler darauf, dass im PBS im „Datastore“ unter „Content“ der entsprechende Backup Owner für das Backup korrekt ist. Es muss unbedingt die Token-ID als Besitzer verwendet werden. Den Owner könnt ihr mit Rechtklick auf dem Host-Eintrag und „Change Owner“ ändern.

Als nächstes tragen wir das Skript für den CronJob ein. Dazu einmal crontab -e ausführen und mit [1] nano als Editor auswählen.

Dort trägt man dann folgendes ein:

0 2 * * * /home/pu/backup.sh

Mit [STRG]+[O] speichern und mit [STRG]+[X] den Editor schließen. Ab sofort wird das Backup jeden Tag um 2 Uhr nachts ausgeführt.

Achtung: Ihr könnt natürlich so keine Backups von Ordnern machen, dessen Besitzer oder Leserechte ihr nicht habt. Dazu dem Ordner die entsprechenden Berechtigungen geben oder über sudo crontab -e mit Root-Berechtigung die Cronjob-Table des Roots bearbeiten.

Backup wiederherstellen

Komplette Sicherung wiederherstellen

Zum Wiederherstellen einer Sicherung benötigen wir zunächst die Information über die vorhandenen Sicherungspunkte.

proxmox-backup-client snapshot list --repository pbs:store_backup host/rasptest

Wir geben dem Befehl noch den Host „host/rasptest“ mit. Somit wird nur die Liste der zugehörigen Host-Sicherungen angezeigt. Wird das weggelassen, wird die komplette Backupliste aller auf dem PBS befindlichen Sicherungen angezeigt.

Um ein Backup wiederherzustellen kann man direkt im Client nachfolgenden Befehl eingeben. Der Lesezugriff muss nicht mit dem Besitzer stattfinden, daher reicht hier die normale Root-Passwortabfrage.

proxmox-backup-client restore host/rasptest/2025-07-15T00:00:01Z rasptest.pxar /home/pu/backup --repository pbs:store_backup --overwrite true
ArgumentBeschreibung
restoreGibt dem Befehl mit, dass ein Restore durchgeführt werden soll.
host/rasptest/2025-07-15T00:00:01ZGibt den kompletten Sicherungsnamen an, der wiederhergestellt werden soll.
rasptest.pxarGibt den Namen des Sicherungsarchivs an.
Achtung: Bei Sicherungen mit „metadata“ oder „data“ werden die Archive in zwei aufgeteilt, mit mpxar und ppxar als Dateiendung. Dennoch .pxar angeben um sich auf das komplette Archiv zu beziehen.
/home/pu/backupDas Zielverzeichnis, wohin die Sicherung kopiert werden soll.
Auch hier Achtung! Wenn ihr als Sicherung „/home/pu/backup“ ausgewählt habt, werden die Daten innerhalb von „backup“ gesichert, nicht der komplette Ordnerpfad bis dahin. Daher unbedingt bei Wiederherstellung in den gleichen Ordner den kompletten Pfad angeben.
–repository pbs:store_backupWie bereits bekannt, das Repository in Form {Server}:{Datastore} angeben.
–overwrite trueSorgt dafür, dass vorhandene Dateien überschrieben werden.

Anschließend sind die Dateien aus der Sicherung kopiert und verfügbar.

Einzelne Dateien wiederherstellen

Es ist auch möglich, einzelne Dateien wiederherzustellen. Dazu geht man in den interaktiven Modus.

proxmox-backup-client catalog shell host/rasptest/2025-07-15T00:00:01Z rasptest.pxar --repository pbs:store_backup

Mit den Standardbefehlen ls und cd kann man sich dann durch die Struktur navigieren.
Mit find /etc/**/*.conf --select, ein Beispiel aus dem Proxmox Handbuch, werden beispielsweise alle Konfigurationsdateien in „etc“ ausgewählt.
Ansonsten verwendet man select test.txt um Dateien direkt auszuwählen. Zum Wiederherstellen der ausgewählten Dateien verwendet man dann restore-selected /home/pu/test/, ich habe hier einen anderen Zielpfad ausgewählt. Mit exit beendet man den interaktiven Modus.

Und schon haben wir eine ggf. versehentlich gelöschte oder bearbeitete Datei wiederhergestellt.

ACHTUNG: Wie bereits bemerkt, habe ich hier einen anderen Pfad angegeben. Es scheint, als ob der Restore im interaktiven Modus kein überschreiben zulässt, falls Dateien noch vorhanden sind. Die Syntax lässt nur ein Target als String zu, also das Sicherungsziel. Der interaktive Modus kann auch nicht mit einem „–overwrite true“ geöffnet werden.

War gar nicht so schwer. Und so funktioniert das Sichern von Ordnern oder ganzen Partitionen natürlich auch auf x86/x64-Rechnern mit dem proxmox-backup-client Paket.

Quellen:
https://pbs.proxmox.com/docs/backup-client.html
https://pbs.proxmox.com/docs/user-management.html
https://pbs.proxmox.com/docs/technical-overview.html#change-detection-mode-data

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert