From 13322836aa9c6d77cacde70e96b49c1f2cfcb11c Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Tue, 8 Apr 2025 13:53:32 -0400 Subject: [PATCH] Recover DB --- recover-db-dev.bash | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 recover-db-dev.bash diff --git a/recover-db-dev.bash b/recover-db-dev.bash new file mode 100644 index 00000000..e7b58155 --- /dev/null +++ b/recover-db-dev.bash @@ -0,0 +1,41 @@ +#!/bin/bash + +# === Configuration === +BUCKET_NAME="ibc-db-backup" +ENDPOINT_URL="https://s3-eu-central-1.ionoscloud.com" +LOCAL_DOWNLOAD_DIR="./" # Where to save the file + +# === Get latest file from IONOS S3 bucket === +LATEST_FILE=$(aws s3api list-objects-v2 \ + --bucket "$BUCKET_NAME" \ + --prefix "data-dump" \ + --endpoint-url "$ENDPOINT_URL" \ + --query 'Contents | sort_by(@, &LastModified) | [-1].Key' \ + --output text) + +# === Check if file was found === +if [ "$LATEST_FILE" == "None" ] || [ -z "$LATEST_FILE" ]; then + echo "❌ No matching .sql.br file found." + exit 1 +fi + +FILENAME=$(basename "$LATEST_FILE") +SQL_FILE="${FILENAME%.br}" # Remove .br suffix + +echo "📥 Downloading $LATEST_FILE" +aws s3 cp "s3://$BUCKET_NAME/$LATEST_FILE" "$LOCAL_DOWNLOAD_DIR" \ + --endpoint-url "$ENDPOINT_URL" + +# === Decompress with Brotli === +echo "🗜️ Decompressing $FILENAME -> $SQL_FILE" +brotli -d "$FILENAME" + +# === Import into Postgres inside Docker === +echo "🐘 Importing into PostgreSQL (online-energieausweis-database-1:main)" +docker exec -i "online-energieausweis-database-1" env PGPASSWORD="hHMP8cd^N3SnzGRR" \ + psql -U "main" -d "main" < "$SQL_FILE" + +echo "✅ Import complete." + +# === Optional: Clean up +rm "$FILENAME" "$SQL_FILE" \ No newline at end of file