#!/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" # Odoo DB "wikijs-db:wikijs:wikijs" # WikiJS DB ) 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" echo "Sichere Datenbank '${DB_NAME}' aus Container '${CONTAINER}'..." 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"