#!/bin/bash # Script Name: proxmox-backup-script.sh # Beschreibung: Macht ein Backup aller Proxmox Konfigurationen und speichert sie an den Ort der Wahl # Aufruf: ./bash proxmox-backup-script.sh # Autor: Patrick Asmus # Web: https://www.media-techport.de # Git-Reposit.: https://git.media-techport.de/scriptos/backup-script-collection # Version: 1.0 # Datum: 24.09.2023 # Modifikation: Neuerstellung ##################################################### # Variablen BACKUP_DIR="/home/backups/pve" NUM_BACKUPS_TO_KEEP=5 EMAIL_ADDRESS="system@media-techport.de" LOGDIR="/var/log/script-logs" DATE=$(date +%Y%m%d%H%M%S) BACKUP_FILE="proxmox_backup_$DATE.tar.gz" LOG_FILE="$LOGDIR/proxmox_backup_$DATE.log" # Globale Funktionen PROXMOX_DIRS_AND_CONFIG=( "etc/pve/" "var/lib/vz/" "var/lib/qemu-server/" "etc/network/interfaces" "etc/network/interfaces.d/" ) # Script mkdir -p "$LOGDIR" exec > >(tee -a "$LOG_FILE") 2>&1 mkdir -p "$BACKUP_DIR" # Erstelle Backup der Proxmox Konfigurationen echo "Sichere Proxmox-Verzeichnisse und Konfigurationen..." tar czf "$BACKUP_DIR/$BACKUP_FILE" -C / "${PROXMOX_DIRS_AND_CONFIG[@]}" # Prüfen, ob das Backup erfolgreich erstellt wurde if [ $? -eq 0 ]; then echo "Proxmox-Backup wurde erfolgreich unter $BACKUP_DIR/$BACKUP_FILE erstellt." # Alte Backups bereinigen, wenn die Anzahl der aufzubewahrenden Backups überschritten ist while [ $(ls -1 "$BACKUP_DIR" | wc -l) -gt $NUM_BACKUPS_TO_KEEP ]; do OLD_BACKUP=$(ls -1t "$BACKUP_DIR" | tail -n 1) rm -f "$BACKUP_DIR/$OLD_BACKUP" echo "Ältestes Backup ($OLD_BACKUP) wurde gelöscht." done else echo "Fehler beim Erstellen des Backups. Eine Benachrichtigung wird gesendet." # E-Mail-Benachrichtigung senden SUBJECT="Backup der Proxmox Konfigurations auf <${HOSTNAME}> fehlgeschlagen" MESSAGE="Fehler beim Erstellen des Backups der Konfiguration auf ${HOSTNAME}. Bitte prüfen!" echo "$MESSAGE" | mail -s "$SUBJECT" "$EMAIL_ADDRESS" fi