Skip to content

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 trixie Repository ist verfügbar ? bookworm funktioniert ebenfalls, aber trixie ist 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:

proxmox-backup-manager cert info | grep Fingerprint

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

crontab -e
0 6 * * * /usr/local/sbin/pbs-backup.sh

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

9. Referenzen