docker_postgres_backup.sh

Initiale Version
This commit is contained in:
Marc Blatter 2025-10-21 18:01:52 +00:00
parent 847da7f078
commit d6e471e63c
1 changed files with 36 additions and 0 deletions

36
docker_postgres_backup.sh Normal file
View File

@ -0,0 +1,36 @@
#!/bin/bash
# /opt/backup/docker_postgres_backup.sh
BACKUP_DIR="/opt/backup"
RETENTION_DAYS=3 # Backups 3 Tage behalten
DATE=$(date +'%Y-%m-%d')
DATABASES=(
"keycloak-db:keycloak:keycloak" # Keycloak DB
"odoo-db:odoo:busybox-demo" # Aktuelle DB für odoo setzen
)
RESULTS=()
mkdir -p "$BACKUP_DIR"
for DB_ENTRY in "${DATABASES[@]}"; do
IFS=":" read -r CONTAINER DB_USER DB_NAME <<< "$DB_ENTRY"
FILENAME="${BACKUP_DIR}/${DATE}_db_${DB_NAME}.sql.gz"
if docker exec "$CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" | gzip > "$FILENAME"; then
RESULTS+=("\"$DB_NAME\":\"ok\"")
else
RESULTS+=("\"$DB_NAME\":\"error\"")
fi
done
# Alte Backups löschen
find "$BACKUP_DIR" -name "*.sql.gz" -type f -mtime +$RETENTION_DAYS -exec rm {} \;
# JSON-Ausgabe formatieren
JSON_OUTPUT="{"
JSON_OUTPUT+=$(IFS=, ; echo "${RESULTS[*]}")
JSON_OUTPUT+="}"
echo "$JSON_OUTPUT"