Add option to import database backup from Git during deployment

Modify the deployment script to allow importing the latest database backup from the Git repository when the 'db' argument is provided. This includes handling backup decompression and database restoration.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
marco370 2025-10-17 08:52:00 +00:00
parent ab7b3c7f90
commit 204717cd9d

View File

@ -2,11 +2,21 @@
set -e
# Script di deployment automatico per VigilanzaTurni
# Uso: bash deploy/deploy.sh
# Uso:
# bash deploy/deploy.sh → deployment normale
# bash deploy/deploy.sh db → deployment + importa backup database da Git
APP_DIR="/var/www/vigilanza-turni"
APP_NAME="vigilanza-turni"
BACKUP_DIR="/var/backups/vigilanza-turni"
GIT_BACKUP_DIR="$APP_DIR/database-backups"
# Verifica parametro per import database
IMPORT_DB=false
if [ "$1" == "db" ]; then
IMPORT_DB=true
echo "🔄 Modalità: Deployment con import database da Git"
fi
echo "🚀 Deployment VigilanzaTurni - $(date)"
@ -19,18 +29,54 @@ if [ -d .git ]; then
git pull origin main || true
fi
# =================== BACKUP DATABASE ===================
echo "💾 Backup database pre-deployment..."
mkdir -p $BACKUP_DIR
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
# Load env vars
if [ -f .env ]; then
source .env
fi
# Esegui backup PostgreSQL
if command -v pg_dump &> /dev/null; then
# =================== IMPORT DATABASE DA GIT (se richiesto) ===================
if [ "$IMPORT_DB" = true ]; then
echo "📦 Import database da backup Git..."
# Trova l'ultimo backup nella directory git
LATEST_GIT_BACKUP=$(ls -t $GIT_BACKUP_DIR/*.sql.gz 2>/dev/null | head -1)
if [ -f "$LATEST_GIT_BACKUP" ]; then
echo "📥 Trovato backup: $LATEST_GIT_BACKUP"
# Controlla che le variabili siano definite
if [ -z "$PGDATABASE" ] || [ -z "$PGUSER" ]; then
echo "❌ Variabili DB non trovate nel .env, impossibile importare"
exit 1
fi
# Chiedi conferma (opzionale - rimuovi se vuoi import automatico)
echo "⚠️ ATTENZIONE: Questo sovrascriverà il database corrente!"
echo "Backup da importare: $(basename $LATEST_GIT_BACKUP)"
read -p "Continuare? (s/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Ss]$ ]]; then
# Decomprimi e importa
echo "🔄 Importazione database in corso..."
gunzip -c "$LATEST_GIT_BACKUP" | PGPASSWORD=$PGPASSWORD psql -h ${PGHOST:-localhost} -U $PGUSER --dbname=$PGDATABASE
echo "✅ Database importato con successo da Git!"
else
echo "❌ Import annullato dall'utente"
exit 1
fi
else
echo "❌ Nessun backup trovato in $GIT_BACKUP_DIR"
exit 1
fi
else
# =================== BACKUP DATABASE NORMALE ===================
echo "💾 Backup database pre-deployment..."
mkdir -p $BACKUP_DIR
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
# Esegui backup PostgreSQL
if command -v pg_dump &> /dev/null; then
# Controlla che le variabili siano definite
if [ -z "$PGDATABASE" ] || [ -z "$PGUSER" ]; then
echo "⚠️ Variabili DB non trovate nel .env, skip backup"
@ -46,8 +92,9 @@ if command -v pg_dump &> /dev/null; then
find $BACKUP_DIR -name "backup_*.sql.gz" -mtime +30 -delete
echo "🧹 Backup vecchi eliminati (retention: 30 giorni)"
fi
else
else
echo "⚠️ pg_dump non trovato, skip backup"
fi
fi
# =================== BUILD & DEPLOY ===================