Files
Bruchtal/docs/backup_restore/proxmox/backup_pve_configs.sh
2026-03-01 23:17:44 +01:00

74 lines
1.6 KiB
Bash

#!/bin/bash
BACKUP_DIR="/mnt/storagebox-nocrypt/pve-configs-backup"
TODAY=$(date +%T_%F)-pve-configs-backup
LOGFILE="pve-backup.log"
mkdir -p "$BACKUP_DIR/$TODAY"
FILES=(
"/root/"
"/etc/pve/"
"/etc/network/interfaces"
"/etc/hosts"
"/etc/resolv.conf"
"/etc/hostname"
"/etc/timezone"
"/etc/passwd"
"/etc/group"
"/etc/shadow"
"/root/.ssh/"
"/etc/vzdump.conf"
"/etc/ssh/sshd_config"
"/var/lib/pve-cluster/"
"/etc/ssh/"
"/etc/cron.d/"
"/etc/cron.daily/"
"/etc/cron.hourly/"
"/etc/cron.weekly/"
"/etc/cron.monthly/"
"/var/spool/cron/"
"/etc/fstab"
"/etc/default/"
"/etc/apt/sources.list"
"/etc/apt/sources.list.d/"
"/var/log/"
"/etc/systemd/"
"/etc/sysctl.conf"
"/etc/security/"
"/var/backups/"
"/etc/fail2ban/"
"/root/backup-pve-configs.sh"
)
EXCLUDE_DIRS=(
"/mnt/storagebox-crypt"
"/mnt/storagebox-nocrypt"
"/var/lib/vz/images/"
"/var/lib/lxc/"
"/var/lib/vz/private/"
"/var/lib/lxcfs/"
)
# rsync-Ausschlussparameter erstellen
EXCLUDE_PARAMS=()
for EXCLUDE in "${EXCLUDE_DIRS[@]}"; do
EXCLUDE_PARAMS+=(--exclude="$EXCLUDE")
done
for FILE in "${FILES[@]}"; do
if [ -e "$FILE" ]; then
echo "Kopiere $FILE..."
rsync -aL --relative --ignore-missing-args --safe-links "${EXCLUDE_PARAMS[@]}" "$FILE" "$BACKUP_DIR/$TODAY/" 2>/dev/null
else
echo "Warnung: $FILE existiert nicht und wird uebersprungen." >> ${LOGFILE}
fi
done
find "$BACKUP_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;
echo "Backup fuer $TODAY abgeschlossen." >> ${LOGFILE}