39 lines
792 B
Bash
39 lines
792 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"
|
|
)
|
|
|
|
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 |