Hallo zusammen,
seit längerem habe ich nach einer Möglichkeit gesucht den Proxmox Host (PVE) zu sichern. Dann ist mir eingefallen, dass sich der Proxmox Backup Server dazu eignet. Neben VMs und LXCs kann man auch den Host sichern. Die Ausgangslage bei mir ist, dass der Backup Server auf einem separaten Server läuft. Die Anleitung funktioniert auch, wenn z.B. der Backup Server in einer VM/LXC auf dem Host laufen würde.
Was ist nun zu tun:
Proxmox Backup Server:
1) Erstellung eines API Tokens mit einer entsprechende Berechtigung
Bitte darauf achten, dass man sich den Token Secret merkt/aufschreibt. Dieser wird nur einmal angezeigt.
2) Im Proxmox Backup Server den Datastore auswählen und Berechtigung vergeben:
Die Rolle "DataStoreBackup" ist ausreichend. Wer eine andere Berechtigung vergeben möchte, kann gerne in der PBS Dokumentation nachschauen.
Proxmox Host (PVE)
1) Im Proxmox Host auf die Shell/CLI gehen und dort erstellen wir mittels nano oder vim ein kleines Skript, Bei mir liegt das Skript direkt im "root" Verzeichnis. Andere Plätze sind auch möglich:
#!/bin/bash
export PBS_REPOSITORY=root@pam!rafael(API_Token)@IP_von_Backup_Server:Name_DataStore
export PBS_PASSWORD=Secret_von_API_Token
export PBS_FINGERPRINT=Fingerprint_von_Backup_Server
export PBS_REPOSITORY
export PBS_PASSWORD
export PBS_FINGERPRINT
proxmox-backup-client backup root.pxar:/ --include-dev /etc/pve
Die letzten Zeile bedeutet, dass ich das gesamte "root" Verzeichnis sichere + das Verzeichnis /etc/pve. Das Verzeichnis /etc/pve wird normalerweise übersprungen. Man kann auch ganze Laufwerke zusätzlich sichern. Informationen dazu stehen in der Dokumentation.
2) Skript ausführbar machen.
Das Skript habe ich bei mir unter dem Namen "pbs.sh" gespeichert. Damit es durch einen Cronjob ausgeführt werden kann, müssen wir es noch ausführbar machen mit dem Befehl
chmod +x pbs.sh
Jetzt könnten wir schon das Skript mit dem Befehlt "bash pbs.sh" testen.
3) Cronjob
Das Verzeichnis /etc/crontab mit nano öffnen und den Cronjob erstellen:
20 23 * * * root /root/pbs.sh (bzw. hier den Pfad zum Skript eingeben)
20 23 steht hier für tägliche Ausführung um 23:20 Uhr.
4) Nach der Ausführung des Cronjob wird eine Email über den Proxmox Host mit der Ausführung verschickt, die dann wie folgt aussieht:
Starting backup: host/pve2/2022-06-15T21:45:01Z Client name: pve2 Starting backup protocol: Wed Jun 15 23:45:01 2022 No previous manifest available.
Upload directory '/' to 'root@pam!rafael@1xxxxxxxxxx:TrueNAS' as root.pxar.didx
skipping mount point: "dev"
skipping mount point: "mnt/pve/truenas_nvme"
skipping mount point: "proc"
skipping mount point: "run"
skipping mount point: "sys"
skipping mount point: "var/lib/lxcfs"
skipping mount point: "var/lib/pve/local-btrfs"
root.pxar: had to backup 3.809 GiB of 4.173 GiB (compressed 1.416 GiB) in 89.15s
root.pxar: average backup speed: 43.753 MiB/s
root.pxar: backup was done incrementally, reused 372.247 MiB (8.7%) Uploaded backup catalog (1.322 MiB)
Duration: 89.84s
End Time: Wed Jun 15 23:46:31 2022
Im Proxmox Backup Server unter DataStore sieht es dann wie folgt aus (ich habe hier einen 3 Node Cluster):
So, das war eigentlich schon. Was ich allerdings nicht weiss, ob evtl. das Skript bzw. der Cronjob bei einem Update evtl. überschrieben wird.
Grüsse
Rafael
seit längerem habe ich nach einer Möglichkeit gesucht den Proxmox Host (PVE) zu sichern. Dann ist mir eingefallen, dass sich der Proxmox Backup Server dazu eignet. Neben VMs und LXCs kann man auch den Host sichern. Die Ausgangslage bei mir ist, dass der Backup Server auf einem separaten Server läuft. Die Anleitung funktioniert auch, wenn z.B. der Backup Server in einer VM/LXC auf dem Host laufen würde.
Was ist nun zu tun:
Proxmox Backup Server:
1) Erstellung eines API Tokens mit einer entsprechende Berechtigung
Bitte darauf achten, dass man sich den Token Secret merkt/aufschreibt. Dieser wird nur einmal angezeigt.
2) Im Proxmox Backup Server den Datastore auswählen und Berechtigung vergeben:
Die Rolle "DataStoreBackup" ist ausreichend. Wer eine andere Berechtigung vergeben möchte, kann gerne in der PBS Dokumentation nachschauen.
Proxmox Host (PVE)
1) Im Proxmox Host auf die Shell/CLI gehen und dort erstellen wir mittels nano oder vim ein kleines Skript, Bei mir liegt das Skript direkt im "root" Verzeichnis. Andere Plätze sind auch möglich:
#!/bin/bash
export PBS_REPOSITORY=root@pam!rafael(API_Token)@IP_von_Backup_Server:Name_DataStore
export PBS_PASSWORD=Secret_von_API_Token
export PBS_FINGERPRINT=Fingerprint_von_Backup_Server
export PBS_REPOSITORY
export PBS_PASSWORD
export PBS_FINGERPRINT
proxmox-backup-client backup root.pxar:/ --include-dev /etc/pve
Die letzten Zeile bedeutet, dass ich das gesamte "root" Verzeichnis sichere + das Verzeichnis /etc/pve. Das Verzeichnis /etc/pve wird normalerweise übersprungen. Man kann auch ganze Laufwerke zusätzlich sichern. Informationen dazu stehen in der Dokumentation.
2) Skript ausführbar machen.
Das Skript habe ich bei mir unter dem Namen "pbs.sh" gespeichert. Damit es durch einen Cronjob ausgeführt werden kann, müssen wir es noch ausführbar machen mit dem Befehl
chmod +x pbs.sh
Jetzt könnten wir schon das Skript mit dem Befehlt "bash pbs.sh" testen.
3) Cronjob
Das Verzeichnis /etc/crontab mit nano öffnen und den Cronjob erstellen:
20 23 * * * root /root/pbs.sh (bzw. hier den Pfad zum Skript eingeben)
20 23 steht hier für tägliche Ausführung um 23:20 Uhr.
4) Nach der Ausführung des Cronjob wird eine Email über den Proxmox Host mit der Ausführung verschickt, die dann wie folgt aussieht:
Starting backup: host/pve2/2022-06-15T21:45:01Z Client name: pve2 Starting backup protocol: Wed Jun 15 23:45:01 2022 No previous manifest available.
Upload directory '/' to 'root@pam!rafael@1xxxxxxxxxx:TrueNAS' as root.pxar.didx
skipping mount point: "dev"
skipping mount point: "mnt/pve/truenas_nvme"
skipping mount point: "proc"
skipping mount point: "run"
skipping mount point: "sys"
skipping mount point: "var/lib/lxcfs"
skipping mount point: "var/lib/pve/local-btrfs"
root.pxar: had to backup 3.809 GiB of 4.173 GiB (compressed 1.416 GiB) in 89.15s
root.pxar: average backup speed: 43.753 MiB/s
root.pxar: backup was done incrementally, reused 372.247 MiB (8.7%) Uploaded backup catalog (1.322 MiB)
Duration: 89.84s
End Time: Wed Jun 15 23:46:31 2022
Im Proxmox Backup Server unter DataStore sieht es dann wie folgt aus (ich habe hier einen 3 Node Cluster):
So, das war eigentlich schon. Was ich allerdings nicht weiss, ob evtl. das Skript bzw. der Cronjob bei einem Update evtl. überschrieben wird.
Grüsse
Rafael