#!/bin/sh set -e # Configuration BACKUP_DIR="/backups" if [ -z "$1" ]; then echo "Usage: ./restore.sh " echo "" echo "Available backups:" ls -lh "${BACKUP_DIR}"/postgres_*.sql.gz 2>/dev/null || echo "No backups found" exit 1 fi BACKUP_FILE="$1" if [ ! -f "${BACKUP_FILE}" ]; then echo "❌ Backup file not found: ${BACKUP_FILE}" exit 1 fi echo "======================================" echo "PostgreSQL Restore - $(date)" echo "======================================" echo "📦 Backup file: ${BACKUP_FILE}" echo "" # Wait for PostgreSQL to be ready until PGPASSWORD="${POSTGRES_PASSWORD}" pg_isready -h "${POSTGRES_HOST}" -U "${POSTGRES_USER}" -d postgres; do echo "⏳ Waiting for PostgreSQL..." sleep 5 done echo "✅ PostgreSQL is ready" echo "" # Warning echo "⚠️ WARNING: This will DROP and RECREATE the database!" echo "⚠️ Database: ${POSTGRES_DB}" echo "" echo "Press Ctrl+C to cancel, or wait 10 seconds to continue..." sleep 10 echo "" echo "🔄 Restoring database..." # Restore backup gunzip -c "${BACKUP_FILE}" | PGPASSWORD="${POSTGRES_PASSWORD}" psql \ -h "${POSTGRES_HOST}" \ -U "${POSTGRES_USER}" \ -d postgres echo "" echo "✅ Database restored successfully" echo "======================================"