Nie możesz wybrać więcej, niż 25 tematów
Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
|
- #!/bin/bash
- set -e
-
- # Verifica se è stato passato il file di backup come argomento
- if [ -z "$1" ]; then
- echo "Errore: Devi specificare il percorso del file di backup .sql.gz"
- echo "Uso: $0 /percorso/al/file_backup.sql.gz"
- exit 1
- fi
-
- BACKUP_FILE="$1"
-
- # Verifica se il file esiste sul file system
- if [ ! -f "$BACKUP_FILE" ]; then
- echo "Errore: Il file di backup specificato non esiste: $BACKUP_FILE"
- exit 1
- fi
-
- # Percorso del file delle variabili d'ambiente
- ENV_FILE="/data/conf/presence/res_levis_backend/build/env/db.env"
-
- # Estrazione dinamica della password dal file .env
- if [ -f "$ENV_FILE" ]; then
- DB_PASSWORD=$(grep -E "^POSTGRES_PASSWORD=" "$ENV_FILE" | cut -d'=' -f2)
- else
- echo "Errore: File d'ambiente non trovato in $ENV_FILE"
- exit 1
- fi
-
- echo "=========================================="
- echo "AVVIO RIPRISTINO DATABASE (DINAMICO)"
- echo "ATTENZIONE: Questo sovrascriverà i dati correnti!"
- echo "=========================================="
- echo "File di origine: $BACKUP_FILE"
- echo "------------------------------------------"
-
- # Pulisce le connessioni attive per evitare blocchi sul drop del database
- echo "1. Chiusura connessioni attive..."
- docker exec -t -e PGPASSWORD="$DB_PASSWORD" db psql -U postgres -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'postgres' AND pid <> pg_backend_pid();" > /dev/null
-
- # Resetta il database postgres e lo ricrea vuoto
- echo "2. Reset e ricreazione database..."
- docker exec -t -e PGPASSWORD="$DB_PASSWORD" db dropdb -U postgres --if-exists postgres
- docker exec -t -e PGPASSWORD="$DB_PASSWORD" db createdb -U postgres postgres
-
- # Decomprime il file e lo inietta direttamente nel psql del container
- echo "3. Importazione dati in corso..."
- gunzip -c "$BACKUP_FILE" | docker exec -i -e PGPASSWORD="$DB_PASSWORD" db psql -U postgres -d postgres > /dev/null
-
- echo "------------------------------------------"
- echo "Ripristino completato con successo!"
- echo "=========================================="
|