#!/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"