diff --git a/scripts/agathe_backup.sh b/scripts/agathe_backup.sh index 44b937b..55bab66 100755 --- a/scripts/agathe_backup.sh +++ b/scripts/agathe_backup.sh @@ -11,7 +11,7 @@ # nur dann beendet, wenn dieses Skript es selbst hochgebracht hat. # Zusätzlich: Schutz gegen parallele Ausführung per flock. -set -euo pipefail +set -Eeuo pipefail # ----------------------------- # Konfiguration @@ -159,6 +159,7 @@ on_error() { local line_no="${1:-unknown}" log "FEHLER in Zeile ${line_no}, Exit-Code ${exit_code}" send_pushover "Backup FEHLER auf $(hostname): Zeile ${line_no}, Exit-Code ${exit_code}" 1 + trap - EXIT cleanup exit "$exit_code" } @@ -431,6 +432,26 @@ rsync_tomedo_backup() { # ----------------------------- # Borg: lokal sichern + Mirror auf CIFS # ----------------------------- +run_borg_allow_warning() { + local label="$1" + shift + + local rc + set +e + "$@" + rc=$? + set -e + + if [[ "$rc" -ge 2 ]]; then + log "FEHLER: ${label} fehlgeschlagen (Exit-Code ${rc})." + return "$rc" + fi + + if [[ "$rc" -eq 1 ]]; then + log "WARNUNG: ${label} mit Warnungen beendet (Exit-Code 1), mache weiter." + fi +} + borg_local_backup() { log "== Borg lokal Backup -> $LOCAL_BORG_REPO ==" @@ -450,7 +471,7 @@ borg_local_backup() { local archive="agathe-$(hostname)-$(date +%F_%H%M%S)" log "Platz lokal: $(df -h "$LOCAL_BORG_BASE" | tail -1)" - borg create --stats --compression zstd,6 \ + run_borg_allow_warning "borg create" borg create --stats --compression zstd,6 \ "$LOCAL_BORG_REPO::$archive" \ / \ /boot \ @@ -476,14 +497,14 @@ borg_local_backup() { --exclude /mnt/groot \ --exclude-caches - borg prune -v --list "$LOCAL_BORG_REPO" \ + run_borg_allow_warning "borg prune" borg prune -v --list "$LOCAL_BORG_REPO" \ --keep-daily="$KEEP_DAILY" \ --keep-weekly="$KEEP_WEEKLY" \ --keep-monthly="$KEEP_MONTHLY" \ --prefix "agathe-$(hostname)-" if [[ "$BORG_CHECK" == "1" ]]; then - borg check -v --verify-data "$LOCAL_BORG_REPO" + run_borg_allow_warning "borg check" borg check -v --verify-data "$LOCAL_BORG_REPO" fi log "Lokales Borg Backup fertig: $archive"