Compare commits

...

2 Commits

Author SHA1 Message Date
scriptos
6603c43cc7 Script umbenannt 2023-09-24 21:43:45 +02:00
scriptos
f0f8660be2 Initial 2023-09-24 21:42:42 +02:00

View File

@ -0,0 +1,59 @@
#!/bin/bash
# Script Name: pve_config-backup-script.sh
# Beschreibung: Macht ein Backup aller Proxmox Konfigurationen und speichert sie an den Ort der Wahl
# Aufruf: ./bash pve_config-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