====== 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.