|
|
@@ -0,0 +1,52 @@ |
|
|
|
|
|
#!/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 "==========================================" |