253 lines
7.2 KiB
Bash
Executable File
253 lines
7.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script di Prevenzione Perdita Modifiche NetGescon
|
|
# Uso: ./prevent-data-loss.sh
|
|
|
|
echo "🛡️ NETGESCON - Sistema Prevenzione Perdita Dati"
|
|
echo "=============================================="
|
|
|
|
# Configurazione
|
|
PROJECT_ROOT="/var/www/netgescon"
|
|
BACKUP_ROOT="/var/www/netgescon/SAFE_BACKUPS"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_DIR="$BACKUP_ROOT/auto_backup_$TIMESTAMP"
|
|
|
|
# Crea directory backup se non esiste
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
echo "📁 Backup Directory: $BACKUP_DIR"
|
|
|
|
# 1. BACKUP VIEWS CRITICHE
|
|
echo ""
|
|
echo "🔒 1. BACKUP VIEWS CRITICHE"
|
|
echo "=============================="
|
|
|
|
CRITICAL_VIEWS=(
|
|
"resources/views/admin/layouts/netgescon.blade.php"
|
|
"resources/views/components/menu/sidebar-netgescon.blade.php"
|
|
"resources/views/admin/stabili/show.blade.php"
|
|
"resources/views/admin/stabili/tabs/palazzine.blade.php"
|
|
"resources/views/admin/stabili/tabs/tabelle-millesimali.blade.php"
|
|
"resources/views/admin/stabili/tabs/gestioni.blade.php"
|
|
"resources/views/admin/soggetti/show.blade.php"
|
|
"resources/views/admin/rubrica/index.blade.php"
|
|
)
|
|
|
|
for view in "${CRITICAL_VIEWS[@]}"; do
|
|
if [ -f "$PROJECT_ROOT/$view" ]; then
|
|
mkdir -p "$BACKUP_DIR/$(dirname "$view")"
|
|
cp "$PROJECT_ROOT/$view" "$BACKUP_DIR/$view"
|
|
echo "✅ $view"
|
|
else
|
|
echo "❌ MANCANTE: $view"
|
|
fi
|
|
done
|
|
|
|
# 2. BACKUP CONTROLLERS CRITICI
|
|
echo ""
|
|
echo "🎮 2. BACKUP CONTROLLERS CRITICI"
|
|
echo "=================================="
|
|
|
|
CRITICAL_CONTROLLERS=(
|
|
"app/Http/Controllers/Admin/StabileController.php"
|
|
"app/Http/Controllers/Admin/RubricaController.php"
|
|
"app/Http/Controllers/Admin/SoggettoController.php"
|
|
"app/Http/Controllers/Admin/CategoryDashboardController.php"
|
|
)
|
|
|
|
for controller in "${CRITICAL_CONTROLLERS[@]}"; do
|
|
if [ -f "$PROJECT_ROOT/$controller" ]; then
|
|
mkdir -p "$BACKUP_DIR/$(dirname "$controller")"
|
|
cp "$PROJECT_ROOT/$controller" "$BACKUP_DIR/$controller"
|
|
echo "✅ $controller"
|
|
else
|
|
echo "❌ MANCANTE: $controller"
|
|
fi
|
|
done
|
|
|
|
# 3. BACKUP MODELS CRITICI
|
|
echo ""
|
|
echo "🏗️ 3. BACKUP MODELS CRITICI"
|
|
echo "============================"
|
|
|
|
CRITICAL_MODELS=(
|
|
"app/Models/Soggetto.php"
|
|
"app/Models/UnitaImmobiliare.php"
|
|
"app/Models/Proprieta.php"
|
|
"app/Models/Stabile.php"
|
|
)
|
|
|
|
for model in "${CRITICAL_MODELS[@]}"; do
|
|
if [ -f "$PROJECT_ROOT/$model" ]; then
|
|
mkdir -p "$BACKUP_DIR/$(dirname "$model")"
|
|
cp "$PROJECT_ROOT/$model" "$BACKUP_DIR/$model"
|
|
echo "✅ $model"
|
|
else
|
|
echo "❌ MANCANTE: $model"
|
|
fi
|
|
done
|
|
|
|
# 4. BACKUP CONFIGURAZIONI
|
|
echo ""
|
|
echo "⚙️ 4. BACKUP CONFIGURAZIONI"
|
|
echo "============================"
|
|
|
|
CONFIG_FILES=(
|
|
".env"
|
|
"routes/web.php"
|
|
"routes/admin.php"
|
|
"config/app.php"
|
|
"tailwind.config.js"
|
|
"package.json"
|
|
)
|
|
|
|
for config in "${CONFIG_FILES[@]}"; do
|
|
if [ -f "$PROJECT_ROOT/$config" ]; then
|
|
mkdir -p "$BACKUP_DIR/$(dirname "$config")"
|
|
cp "$PROJECT_ROOT/$config" "$BACKUP_DIR/$config"
|
|
echo "✅ $config"
|
|
else
|
|
echo "❌ MANCANTE: $config"
|
|
fi
|
|
done
|
|
|
|
# 5. CREA SCRIPT DI RIPRISTINO
|
|
echo ""
|
|
echo "🔄 5. CREAZIONE SCRIPT RIPRISTINO"
|
|
echo "=================================="
|
|
|
|
cat > "$BACKUP_DIR/RESTORE.sh" << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# Script di Ripristino Automatico NetGescon
|
|
echo "🔄 RIPRISTINO BACKUP NETGESCON"
|
|
echo "=============================="
|
|
|
|
BACKUP_SOURCE=$(dirname "$0")
|
|
PROJECT_ROOT="/var/www/netgescon"
|
|
|
|
echo "📂 Ripristino da: $BACKUP_SOURCE"
|
|
echo "📁 Destinazione: $PROJECT_ROOT"
|
|
|
|
# Conferma dall'utente
|
|
read -p "⚠️ ATTENZIONE: Questo sovrascriverà i file esistenti. Continuare? (s/N): " confirm
|
|
if [[ ! $confirm =~ ^[Ss]$ ]]; then
|
|
echo "❌ Ripristino annullato"
|
|
exit 0
|
|
fi
|
|
|
|
# Backup dello stato attuale prima del ripristino
|
|
CURRENT_BACKUP="$PROJECT_ROOT/_BACKUP_BEFORE_RESTORE_$(date +%Y%m%d_%H%M%S)"
|
|
mkdir -p "$CURRENT_BACKUP"
|
|
echo "📦 Backup stato attuale in: $CURRENT_BACKUP"
|
|
|
|
# Copia tutto il backup nella destinazione
|
|
echo "🔄 Ripristino in corso..."
|
|
cp -r "$BACKUP_SOURCE"/* "$PROJECT_ROOT"/ 2>/dev/null || echo "⚠️ Alcuni file potrebbero non essere stati copiati"
|
|
|
|
# Pulisci cache Laravel
|
|
cd "$PROJECT_ROOT"
|
|
php artisan cache:clear
|
|
php artisan view:clear
|
|
php artisan config:clear
|
|
|
|
echo "✅ RIPRISTINO COMPLETATO!"
|
|
echo "🔍 Verifica il funzionamento del sistema"
|
|
EOF
|
|
|
|
chmod +x "$BACKUP_DIR/RESTORE.sh"
|
|
echo "✅ Script ripristino creato: $BACKUP_DIR/RESTORE.sh"
|
|
|
|
# 6. CREA DOCUMENTAZIONE BACKUP
|
|
echo ""
|
|
echo "📋 6. DOCUMENTAZIONE BACKUP"
|
|
echo "============================"
|
|
|
|
cat > "$BACKUP_DIR/README.md" << EOF
|
|
# BACKUP NETGESCON - $TIMESTAMP
|
|
|
|
## 📅 Informazioni Backup
|
|
- **Data/Ora**: $(date)
|
|
- **Sistema**: $(uname -a)
|
|
- **Directory Source**: $PROJECT_ROOT
|
|
- **Directory Backup**: $BACKUP_DIR
|
|
|
|
## 🗂️ Contenuto Backup
|
|
### Views Critiche
|
|
$(for view in "${CRITICAL_VIEWS[@]}"; do echo "- $view"; done)
|
|
|
|
### Controllers Critici
|
|
$(for controller in "${CRITICAL_CONTROLLERS[@]}"; do echo "- $controller"; done)
|
|
|
|
### Models Critici
|
|
$(for model in "${CRITICAL_MODELS[@]}"; do echo "- $model"; done)
|
|
|
|
### Configurazioni
|
|
$(for config in "${CONFIG_FILES[@]}"; do echo "- $config"; done)
|
|
|
|
## 🔄 Come Ripristinare
|
|
\`\`\`bash
|
|
cd $BACKUP_DIR
|
|
./RESTORE.sh
|
|
\`\`\`
|
|
|
|
## ⚠️ Note Importanti
|
|
1. Questo backup include solo i file critici modificati
|
|
2. Prima di ripristinare, verifica la compatibilità
|
|
3. Il ripristino sovrascriverà i file esistenti
|
|
4. Viene creato un backup dello stato corrente prima del ripristino
|
|
|
|
## 🛡️ File Critici Monitorati
|
|
- Layout Two-Column Palazzine (SX Stabili, DX Appartamenti)
|
|
- Layout Two-Column Tabelle Millesimali (SX Tabelle, DX Voci)
|
|
- Tab Gestioni negli Stabili
|
|
- Rubrica nel Sidebar
|
|
- Header con info Condominio
|
|
- Models con relazioni corrette
|
|
- Views per collegamento Soggetti
|
|
|
|
## 🚀 Stato Sistema al Backup
|
|
- Laravel Cache: Pulita
|
|
- Views Cache: Pulita
|
|
- Asset URL: Configurato per rete (192.168.0.200)
|
|
- Database Relations: Corrette (senza colonne inesistenti)
|
|
- Two-Column Layouts: Attivi e funzionanti
|
|
EOF
|
|
|
|
echo "✅ Documentazione creata: $BACKUP_DIR/README.md"
|
|
|
|
# 7. RIEPILOGO FINALE
|
|
echo ""
|
|
echo "🎯 RIEPILOGO BACKUP"
|
|
echo "==================="
|
|
echo "📁 Backup salvato in: $BACKUP_DIR"
|
|
echo "📄 File backup creati: $(find "$BACKUP_DIR" -type f | wc -l)"
|
|
echo "💾 Dimensione backup: $(du -sh "$BACKUP_DIR" | cut -f1)"
|
|
echo ""
|
|
echo "🔧 COMANDI UTILI:"
|
|
echo "Ripristino: cd $BACKUP_DIR && ./RESTORE.sh"
|
|
echo "Verifica: ls -la $BACKUP_DIR"
|
|
echo "Documentazione: cat $BACKUP_DIR/README.md"
|
|
echo ""
|
|
echo "✅ BACKUP COMPLETATO CON SUCCESSO!"
|
|
|
|
# 8. PULIZIA BACKUP VECCHI (conserva ultimi 10)
|
|
echo ""
|
|
echo "🧹 PULIZIA BACKUP VECCHI"
|
|
echo "========================"
|
|
|
|
BACKUP_COUNT=$(ls -1 "$BACKUP_ROOT" | grep "auto_backup_" | wc -l)
|
|
if [ "$BACKUP_COUNT" -gt 10 ]; then
|
|
echo "🗑️ Rimozione backup più vecchi (mantengo ultimi 10)..."
|
|
ls -1t "$BACKUP_ROOT" | grep "auto_backup_" | tail -n +11 | while read old_backup; do
|
|
rm -rf "$BACKUP_ROOT/$old_backup"
|
|
echo "❌ Rimosso: $old_backup"
|
|
done
|
|
else
|
|
echo "📦 Backup count: $BACKUP_COUNT/10 (nessuna pulizia necessaria)"
|
|
fi
|
|
|
|
echo ""
|
|
echo "🛡️ Sistema di prevenzione perdita dati attivo!"
|
|
echo "💡 Esegui questo script prima di modifiche importanti"
|