BusyBox/daily_folder_backup.sh

40 lines
808 B
Bash

#!/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"
"/opt/wikijs"
)
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