Outils pour utilisateurs

Outils du site


Panneau latéral

linux:proxmox-backup-server (lu 3453 fois)

Proxmox Backup Server

Installation

Installation sur le même serveur physique que Proxmox. Bien que pas recommandé.

Dépôts

https://pbs.proxmox.com/docs/installation.html#sysadmin-package-repositories

vi /etc/apt/sources.list.d/pbs.sources

Types: deb
URIs: http://download.proxmox.com/debian/pbs
Suites: trixie
Components: pbs-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
apt update
apt install proxmox-backup-server

Une nouvelle source apt sera créé pbs-enterprise.sources

Ajoutez à la fin de ce fichier

Enabled: false

Ajouter un server proxmox

Menu :

  • Configuration / Remotes
  • bouton Add
  • Auth ID : root@pam (par exemple)
  • FingerPrint
    • Aller sur le server proxmox
    • Menu System / Certificates
    • Sélectionnez pveproxy-ssl.pem
    • Bouton View certificate et copier le fingerprint

proxmox-backup-client

On peut backuper des systèmes de fichiers voir même des systèmes de block avec la commande proxmox-backup-client en gardant les avantages de sauvegarde incrémentielle, chiffré etc…

Mes exigences / contraintes :

  • Je ne veux pas que mon serveur distant puisse se connecter à mon serveur PBS (pour des raisons de sécurité)
  • Je met le password dans un fichier pour qu’il ne s’affiche pas dans les process
  • Installation obligatoire du binaire proxmox-backup-client sur le serveur distant
  • Connexion ssh par clé
  • Tunnel ssh pour bénéficier de la déduplication de PBS

Créer une paire de clés SSH dédié

ssh-keygen -t ed25519 -f ~/.ssh/id_pbs_backup

On peut restreindre l’utilisation de ssh sur le serveur distant en éditant ~/.ssh/authorized_keys

no-pty,no-X11-forwarding,no-agent-forwarding,command="/bin/echo 'Tunnel only'" ssh-ed25519 AAAAC3Nza... (votre clé)

Automatiser la connexion ssh sur le serveur PBS en éditant le fichier ~/.ssh/config

Host sauvegarde-distante
    HostName IP_DU_SERVEUR_DISTANT
    User utilisateur
    IdentityFile ~/.ssh/id_pbs_backup
    RemoteForward 8007 localhost:8007

Exemple d’un script qui permet de sauvegarder une machine distante

#!/bin/bash
 
# --- Configuration ---
REMOTE_USER="utilisateur"
REMOTE_HOST="ip_du_serveur_distant"
PBS_PASSWORD="ton_mot_de_passe_pbs"
PBS_REPOSITORY="utilisateur@localhost:8007:datastore"
BACKUP_PATH="/chemin/a/sauvegarder"
WEBHOOK_URL="https://votre-url-webhook.com/..."
 
# Internes
SSH_CONTROL="~/.ssh/pbs_tunnel_control"
REMOTE_PASS_FILE="/tmp/.pbs_pass_tmp"
START_TIME=$(date +%s)
 
# --- Fonction Webhook ---
send_notification() {
    curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"$1\"}" "$WEBHOOK_URL" > /dev/null 2>&1
}
 
send_notification "🚀 Début de la sauvegarde Proxmox pour **$REMOTE_HOST**."
 
# 1. Ouverture du tunnel
# -M : Mode maître / -S : Fichier de contrôle (socket) / -fN : Arrière-plan sans commande
ssh -fN -M -S "$SSH_CONTROL" -R 8007:localhost:8007 "$REMOTE_USER@$REMOTE_HOST"
 
# 2. Préparation du secret
ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" "echo '$PBS_PASSWORD' > $REMOTE_PASS_FILE && chmod 600 $REMOTE_PASS_FILE"
 
# 3. Sauvegarde
ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" \
    "proxmox-backup-client backup root.pxar:$BACKUP_PATH --repository $PBS_REPOSITORY --password-file $REMOTE_PASS_FILE"
 
BACKUP_EXIT_CODE=$?
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
H_DURATION=$(printf '%02dh %02dm %02ds\n' $((DURATION/3600)) $((DURATION%3600/60)) $((DURATION%60)))
 
# 4. Nettoyage
ssh -S "$SSH_CONTROL" "$REMOTE_USER@$REMOTE_HOST" "rm -f $REMOTE_PASS_FILE"
ssh -S "$SSH_CONTROL" -O exit "$REMOTE_USER@$REMOTE_HOST"
 
# --- Notification de fin ---
if [ $BACKUP_EXIT_CODE -eq 0 ]; then
    send_notification "✅ Sauvegarde réussie en **$H_DURATION**."
else
    send_notification "❌ Échec de la sauvegarde sur **$REMOTE_HOST** après $H_DURATION (Code: $BACKUP_EXIT_CODE)."
    exit $BACKUP_EXIT_CODE
fi
linux/proxmox-backup-server.txt · Dernière modification : de edmc73