diff --git a/docker_postgres_backup.sh b/docker_postgres_backup.sh new file mode 100644 index 0000000..9d79437 --- /dev/null +++ b/docker_postgres_backup.sh @@ -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" \ No newline at end of file