PBS Client Physical Host
Voraussetzungen¶
- Debian Trixie (13) ? nicht Buster/Bullseye/Bookworm
- Zugriff auf pbs (Port 8007)
- PBS-User mit Rechten auf Datastore
1. PBS Client Repository einrichten¶
Proxmox stellt kein natives Trixie-Repository bereit. Das Bookworm-Repository funktioniert aber auf Trixie:
wget https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg \
-O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg
echo "deb http://download.proxmox.com/debian/pbs-client trixie main" \
> /etc/apt/sources.list.d/pbs-client.list
apt update
apt install proxmox-backup-client
Hinweis: Das
trixieRepository ist verfügbar ?bookwormfunktioniert ebenfalls, abertrixieist die korrekte Wahl für Debian 13.
2. PBS-User auf pbs erstellen¶
Auf pbs1-shn1 ausführen:
# User erstellen
proxmox-backup-manager user create <hostname>@pbs --password "sicherespasswort"
# Rechte auf Datastore vergeben
proxmox-backup-manager acl update /datastore/sas-pool DatastoreBackup \
--auth-id <hostname>@pbs
# Optional: Namespace-spezifische Rechte
proxmox-backup-manager acl update /datastore/sas-pool/shn1/physical DatastoreBackup \
--auth-id <hostname>@pbs
3. Fingerprint ermitteln¶
Auf pbs:
Fingerprint notieren ? wird im Backup-Skript benötigt.
4. Umgebung vorbereiten¶
Auf dem physischen Host:
# XDG_RUNTIME_DIR erstellen (fehlt bei root ohne systemd-Session)
mkdir -p /run/user/0
chmod 700 /run/user/0
# Passwort-Datei erstellen
echo "sicherespasswort" > /etc/pbs-backup.pw
chmod 600 /etc/pbs-backup.pw
5. Backup manuell testen¶
export XDG_RUNTIME_DIR="/run/user/0"
export PBS_REPOSITORY="<hostname>@pbs@<pbs-ip>:sas-pool"
export PBS_FINGERPRINT="<fingerprint>"
export PBS_PASSWORD="$(cat /etc/pbs-backup.pw)"
export PBS_NAMESPACE="shn1/physical"
proxmox-backup-client backup root.img:/dev/sda \
--backup-id "<hostname>"
Wichtig: FQDN und Hostnamen mit Punkten funktionieren nicht im Repository-String ? zwingend IP-Adresse verwenden.
6. Backup-Skript¶
Datei erstellen: /usr/local/sbin/pbs-backup.sh
cat > /usr/local/sbin/pbs-backup.sh << 'EOF'
#!/bin/bash
# ??? Konfiguration ????????????????????????????????????????????????????????????
PBS_USER="<hostname>@pbs"
PBS_HOST="<pbs-ip>"
PBS_DATASTORE="sas-pool"
PBS_NAMESPACE="ns/physical"
PBS_BACKUP_ID="<hostname>"
PBS_FINGERPRINT="<fingerprint>"
PBS_PASSWORD_FILE="/etc/pbs-backup.pw"
LOG_FILE="/var/log/pbs-backup.log"
# ??? Umgebung ?????????????????????????????????????????????????????????????????
export PBS_REPOSITORY="${PBS_USER}@${PBS_HOST}:${PBS_DATASTORE}"
export PBS_FINGERPRINT="${PBS_FINGERPRINT}"
export PBS_PASSWORD="$(cat ${PBS_PASSWORD_FILE})"
export PBS_NAMESPACE="${PBS_NAMESPACE}"
export XDG_RUNTIME_DIR="/run/user/0"
mkdir -p /run/user/0
chmod 700 /run/user/0
# ??? Logging ??????????????????????????????????????????????????????????????????
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "${LOG_FILE}"
}
# ??? Backup ???????????????????????????????????????????????????????????????????
log "INFO Backup gestartet"
log "INFO Host: ${PBS_BACKUP_ID} ? ${PBS_REPOSITORY}/${PBS_NAMESPACE}"
proxmox-backup-client backup root.img:/dev/sda \
--backup-id "${PBS_BACKUP_ID}" \
>> "${LOG_FILE}" 2>&1
EXIT_CODE=$?
if [ ${EXIT_CODE} -eq 0 ]; then
log "INFO Backup erfolgreich abgeschlossen"
else
log "ERROR Backup fehlgeschlagen (Exit-Code: ${EXIT_CODE})"
fi
exit ${EXIT_CODE}
EOF
chmod 700 /usr/local/sbin/pbs-backup.sh
7. Cron einrichten¶
Täglich um 06:00 ? passt in das Backup-Zeitfenster nach den Nacht-Jobs.
8. Bekannte Probleme¶
| Problem | Ursache | Lösung |
|---|---|---|
unable to parse repository url |
FQDN mit Punkten im Repository-String | IP-Adresse statt FQDN verwenden |
XDG_RUNTIME_DIR must be set |
Fehlendes Verzeichnis bei root | mkdir -p /run/user/0 && chmod 700 /run/user/0 |
XDG_RUNTIME_DIR must be accessible |
Verzeichnis existiert nicht | Gleiche Lösung wie oben |
Repository mit buster oder bookworm |
Veraltetes/falsches Repo für Trixie | trixie Repository verwenden |