====== Proxmox Backup Server Client ====== Der Client ist verfügbar aktuell für * Debian * ??? * ??? \\ ===== Client Installation ===== ==== Debian ==== Non Sub Client echo "deb http://download.proxmox.com/debian/pbs buster pbs-no-subscription" >> /etc/apt/sources.list.d/pbs.list apt update apt install proxmox-backup-client \\ Sub Client echo "deb http://download.proxmox.com/debian/pbs buster pbs-enterprise" >> /etc/apt/sources.list.d/pbs.list apt update apt install proxmox-backup-client \\ ==== ubuntu 20.04 Workarrund ==== Aktuell gibt es noch keine offiziellen Client für Ubuntu. Dieser Funktioniert jedoch. Getestet unter 20.04 \\ wget http://download.proxmox.com/debian/pve/dists/buster/pvetest/binary-amd64/proxmox-backup-client_1.0.8-1_amd64.deb apt update apt install ./proxmox-backup-client_1.0.8-1_amd64.deb Auf andere Clients warte ich noch... \\ ===== Client Benchmark ===== Um zu sehen wie schnell der Client auf dem System arbeiten kann, kann ein kleiner Benchmark durchgeführt werden. root@debian01:~# proxmox-backup-client benchmark SHA256 speed: 121.24 MB/s Compression speed: 160.03 MB/s Decompress speed: 313.62 MB/s AES256/GCM speed: 63.00 MB/s Verify speed: 79.98 MB/s ┌───────────────────────────────────┬───────────────────┐ │ Name │ Value │ ╞═══════════════════════════════════╪═══════════════════╡ │ TLS (maximal backup upload speed) │ not tested │ ├───────────────────────────────────┼───────────────────┤ │ SHA256 checksum computation speed │ 121.24 MB/s (6%) │ ├───────────────────────────────────┼───────────────────┤ │ ZStd level 1 compression speed │ 160.03 MB/s (21%) │ ├───────────────────────────────────┼───────────────────┤ │ ZStd level 1 decompression speed │ 313.62 MB/s (26%) │ ├───────────────────────────────────┼───────────────────┤ │ Chunk verification speed │ 79.98 MB/s (11%) │ ├───────────────────────────────────┼───────────────────┤ │ AES256 GCM encryption speed │ 63.00 MB/s (2%) │ └───────────────────────────────────┴───────────────────┘ ===== Environment Variablen ===== * PBS_REPOSITORY -> Default Backup Repo * PBS_PASSWORD -> Passwort zum Backup Server * PBS_ENCRYPTION_PASSWORD -> Wenn Verschlüsselung verwendet wird muss hier das Secret eingetragen werden * PBS_FINGERPRINT -> Wird nur verwendet bei Cert Auth Setzt man die ENV Vars muss man bei den einzelnen Befehlen für den Backup Client nicht immer alle Parameter mit geben. \\ Dies erleichtet einem das ganze schon sehr. Hier ein Bespiel für meine Testinstallation export PBS_PASSWORD="asdf1234" export PBS_REPOSITORY="192.168.134.150:backup01" \\ ===== Backup mit dem Client erstellen ===== proxmox-backup-client backup root.pxar: --repository : proxmox-backup-client backup root.pxar:/ --repository 192.168.134.150:backup01 \\ Um ein Backup periodisch zu machen kann man hier einfach ein Script schreiben und dieses via cron einbinden \\ ===== Backup Snashots anzeigen ===== Anzeigen der Backups die auf dem Server liegen proxmox-backup-client snapshots --repository 192.168.134.150:backup01 \\ Anzeigen der Files im Snapshot Zeigt alle Files von diesem Backup an. Achtung -> lange Liste proxmox-backup-client catalog dump --repository : proxmox-backup-client catalog dump --repository 192.168.134.150:backup01 host/debian01/2020-10-30T09:40:18Z \\ ===== Restore mit dem Client ===== Es gibt verschiedene Möglichkeiten einen Restore zu machen. \\ ==== Restore eines Snapshots ==== Hier werden alle Daten in das angegeben Zielverzeichnis Restored Restore von einem Archiv (alle Files die da drin sind) proxmox-backup-client restore --repository : root.pxar proxmox-backup-client restore --repository 192.168.134.150:backup01 host/debian01/2020-10-30T09:40:18Z root.pxar /root/bla_restore.txt \\ ==== Single File Restore ==== Dies ist mit dem Interaktiven Restore recht einfach proxmox-backup-client catalog shell --repository : root.pxar \\ Hier ein Beispiel Restore von zwei Files root@debian01:~# proxmox-backup-client catalog shell --repository 192.168.134.150:backup01 host/debian01/2020-11-19T10:25:34Z root.pxar Starting interactive shell pxar:/ > ls bin boot dev etc home initrd.img initrd.img.old lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin srv sys tmp usr var vmlinuz vmlinuz.old pxar:/ > select /root/bla.txt added path: "/root/bla.txt" pxar:/ > select /etc/hosts added path: "/etc/hosts" pxar:/ > list-selected /etc/hosts /root/bla.txt pxar:/ > restore-selected /home/restore/ pxar:/ > exit root@debian01:~# ls -la /home/restore/etc/hosts -rw-r--r-- 1 root root 188 Okt 30 10:18 /home/restore/etc/hosts root@debian01:~# cat /home/restore/root/bla.txt bla bla bla \\ ==== Mounten eines Snapshots ==== Man kann via FUSE einen Snapshot mounten und direkt da drin arbeiten bzw. sich seine Files suchen proxmox-backup-client mount --repository root.pxar \\ Hier ein Beispiel root@debian01:~# proxmox-backup-client mount --repository 192.168.88.150:backup01 host/debian01/2020-11-19T10:25:34Z root.pxar /mnt/x FUSE library version: 3.4.1 root@debian01:~# cat /mnt/x/root/bla.txt bla bla bla root@debian01:~# ls -la /mnt/x/ insgesamt 4 drwxr-xr-x 2 root root 0 Okt 30 10:22 . drwxr-xr-x 3 root root 4096 Nov 19 11:46 .. lrwxrwxrwx 1 root root 0 Okt 30 10:18 bin -> usr/bin drwxr-xr-x 2 root root 0 Okt 30 10:24 boot drwxr-xr-x 2 root root 0 Okt 30 10:25 dev drwxr-xr-x 2 root root 0 Nov 19 10:23 etc drwxr-xr-x 2 root root 0 Okt 30 10:25 home lrwxrwxrwx 1 root root 0 Okt 30 10:22 initrd.img -> boot/initrd.img-4.19.0-12-amd64 lrwxrwxrwx 1 root root 0 Okt 30 10:19 initrd.img.old -> boot/initrd.img-4.19.0-11-amd64 lrwxrwxrwx 1 root root 0 Okt 30 10:18 lib -> usr/lib lrwxrwxrwx 1 root root 0 Okt 30 10:18 lib32 -> usr/lib32 lrwxrwxrwx 1 root root 0 Okt 30 10:18 lib64 -> usr/lib64 lrwxrwxrwx 1 root root 0 Okt 30 10:18 libx32 -> usr/libx32 drwx------ 2 root root 0 Okt 30 10:18 lost+found drwxr-xr-x 2 root root 0 Okt 30 10:18 media drwxr-xr-x 2 root root 0 Okt 30 10:18 mnt drwxr-xr-x 2 root root 0 Okt 30 10:18 opt dr-xr-xr-x 2 root root 0 Okt 30 10:25 proc drwx------ 2 root root 0 Nov 19 11:24 root drwxr-xr-x 2 root root 0 Nov 19 11:03 run lrwxrwxrwx 1 root root 0 Okt 30 10:18 sbin -> usr/sbin drwxr-xr-x 2 root root 0 Okt 30 10:18 srv dr-xr-xr-x 2 root root 0 Okt 30 10:25 sys drwxrwxrwt 2 root root 0 Nov 19 09:54 tmp drwxr-xr-x 2 root root 0 Okt 30 10:18 usr drwxr-xr-x 2 root root 0 Okt 30 10:18 var lrwxrwxrwx 1 root root 0 Okt 30 10:22 vmlinuz -> boot/vmlinuz-4.19.0-12-amd64 lrwxrwxrwx 1 root root 0 Okt 30 10:19 vmlinuz.old -> boot/vmlinuz-4.19.0-11-amd64 \\ ==== Restore über PVE ==== Einen Restore über PVE (einer ganzen VM) macht man einfach wie üblich über das PVE GUI. \\ Dazu gibt es zwei Arten === Restore der VM neben die alte === Hier kann eine neue VMID vergeben werden damit wird die alte VM nicht überschrieben. - Auf den PBS Datastore gehen - Content - Backup auswählen - Restore Button - Storage: Wo der Restore abgelegt werden soll - VMID: Hier kann eine neue VMID vergeben werden - Read Limit: Restore Durchsatz - Unique: Vergabe neuer Mac Adresse (wird normal nicht benötigt oder gewollt) \\ === Restore der VM über die alte === Wenn man gleich über die alte oder defekte VM restoren möchte muss man diese Weg gehen - VM auswählen - Backup - Storage: PBS Datastore auswählen - Backup auswählen - Restore Button - Storage: Wo der Restore abgelegt werden soll - VMID: Diese ist jetzt fix auswählt und zeigt auf die alte bzw. bestehende - Read Limit: Restore Durchsatz - Unique: Vergabe neuer Mac Adresse (wird normal nicht benötigt oder gewollt) \\ ===== Remote Backup Server & Sync ===== Man kann an einem zweiten Standort einen zweiten Backup Server stehen haben haben die Daten auf den anderen Standort spielgen. \\ Dazu muss man die Server zuerst verbinden.\\ Ich habe das ganze aus der Sicht der Remote Seite durchgeführt. Primär = Aktive Backups / Remote = Sync \\ ==== Remote Backup Server hinzufügen ==== Configuration --> Remotes --> Add * Remote: Name des Servers im GUI * Host: IP oder FQDN * Auth ID: @ (vermutlich öfters root@pam) * Password: PW vom User * Fingerprint: SSH Fingerprint vom Server Nach der Einrichtung ist die Serververbindung zwischen den beiden Backupservern nur in einem GUI sichtbar. \\ ==== Sync Job ==== Datastore -> Sync Jobs -> Add * Local Datastore: Local Ziel Datastore * Local Owner: root@pam (kann man natürlich auch ändern) * Source Remote: Backup Server von dem ich die Daten holen möchte * Source Datastore: Datastore von dem ich Daten holen möchte * Remove vanished: Wenn aktiv werden auch auf der Remote Seite Daten gelöscht wenn sie auf der Primären gelöscht wurden * Sync Schedule: Wann soll gesynct werden. \\ Nach einem erfolgreichen Sync sieht an schon die Daten unter "Content". \\ Hat man "Remove vanished" nicht gesetzt bleiben die Daten auf ewig liegen. Daher muss man sich eine Prune & GC Policy überlegen.