diff --git a/daily_folder_backup.sh b/daily_folder_backup.sh new file mode 100644 index 0000000..c6f92ba --- /dev/null +++ b/daily_folder_backup.sh @@ -0,0 +1,39 @@ +#!/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 \ No newline at end of file