#!/bin/bash # /opt/backup/daily_folder_backup.sh BACKUP_DIR="/opt/backup" RETENTION_DAYS=3 DATE=$(date +'%Y-%m-%d') FOLDERS=( "/opt/nextcloud" "/opt/odoo" "/opt/paperless" ) STATUS=0 FAILED_LIST=() for SRC in "${FOLDERS[@]}"; do BASENAME=$(basename "$SRC") DEST="${BACKUP_DIR}/${DATE}_${BASENAME}.tar.gz" tar -czf "$DEST" "$SRC" 2>/dev/null if [ $? -ne 0 ]; then STATUS=1 FAILED_LIST+=("$BASENAME") fi done find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +"$RETENTION_DAYS" -exec rm {} \; # JSON-Ausgabe erzeugen if [ $STATUS -eq 0 ]; then echo "{\"status\": \"success\", \"failed\": []}" else FAILED_JSON=$(printf '"%s",' "${FAILED_LIST[@]}") FAILED_JSON="[${FAILED_JSON%,}]" echo "{\"status\": \"error\", \"failed\": $FAILED_JSON}" fi exit $STATUS