#!/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}