2025-06-09 02:58:05 +02:00
2025-06-09 02:58:05 +02:00
2025-06-09 02:55:35 +02:00

PBS Self-Backup Script (vm/100)

Ce script permet de réaliser une sauvegarde automatique du système PBS lui-même, en tant que VM 100, directement dans un dépôt PBS distant via proxmox-backup-client. Il envoie ensuite un rapport avec les logs vers un canal Discord.


🔧 Configuration

# 🔐 Auth avec API Token
export PBS_REPOSITORY='backup@pbs!pveclient@192.168.1.100:marechal-pve'
export PBS_PASSWORD='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

# 🗂️ Répertoire PBS de la VM 100 (PBS lui-même)
VM_ID="100"
DEST_VM_DIR="/mnt/ssd4to/vm/$VM_ID"

# 📄 Log
LOGFILE="/var/log/pbs_self_backup.log"
> "$LOGFILE"

# 📤 Discord Webhook
WEBHOOK="https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

🚀 Commande principale

# 🧾 Début du backup
START_TIME=$(date "+%a %b %d %T %Z %Y")
echo "[$START_TIME] 🔄 Starting backup of PBS (self) to $PBS_REPOSITORY (vm/$VM_ID)" >> "$LOGFILE"

# ✅ S'assure que le fichier owner est correct
echo 'backup@pbs!pveclient' > "$DEST_VM_DIR/owner"
chown backup:backup "$DEST_VM_DIR/owner"

# 📦 Lancer la sauvegarde
proxmox-backup-client backup root.pxar:/ \
  --repository "$PBS_REPOSITORY" \
  --backup-id "$VM_ID" \
  --backup-type vm >> "$LOGFILE" 2>&1

STATUS=$?
END_TIME=$(date "+%a %b %d %T %Z %Y")

if [ "$STATUS" -eq 0 ]; then
    echo "[$END_TIME] ✅ PBS self-backup completed successfully." >> "$LOGFILE"
else
    echo "[$END_TIME] ❌ PBS self-backup failed (status $STATUS)." >> "$LOGFILE"
fi

📤 Envoi du rapport à Discord

curl -F "payload_json={\"content\":\"📦 Rapport sauvegarde PBS (self-backup vm/$VM_ID)\"}" \
     -F "file=@$LOGFILE;type=text/plain" \
     "$WEBHOOK"

🕒 Cron (planification automatique)

Ajoutez cette ligne à la crontab (crontab -e) :

0 2 * * 1,4 bash /home/scripts/pbs_self_backup.sh > /dev/null 2>&1  # 100 pbs, pve, standalone node

Cela exécutera la sauvegarde chaque lundi et jeudi à 02:00.


💡 Remarques :

  • La sauvegarde est incrémentielle.
  • Le log est envoyé sous forme de fichier attaché à Discord.
  • owner est automatiquement corrigé si besoin.
  • Utiliser uniquement un PBS externe comme dépôt (pas self-backup dans même PBS).
Description
No description provided
Readme 68 KiB
Languages
Shell 100%