📋 Commit iniziale con: - ✅ Documentazione unificata in docs/ - ✅ Codice Laravel in netgescon-laravel/ - ✅ Script automazione in scripts/ - ✅ Configurazione sync rsync - ✅ Struttura organizzata e pulita 🔄 Versione: 2025.07.19-1644 🎯 Sistema pronto per Git distribuito
197 lines
5.5 KiB
Bash
197 lines
5.5 KiB
Bash
#!/bin/bash
|
|
|
|
# NetGescon Sync Automation Setup
|
|
# Script per configurare la sincronizzazione automatica
|
|
# Versione: 1.0
|
|
# Data: 2025-01-17
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
CRON_FILE="/tmp/netgescon-sync-cron"
|
|
|
|
# Colori
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}NetGescon Sync Automation Setup${NC}"
|
|
echo "======================================="
|
|
echo
|
|
|
|
# Verifica se i script esistono
|
|
if [[ ! -f "$SCRIPT_DIR/auto-sync.sh" ]]; then
|
|
echo -e "${RED}Errore: Script auto-sync.sh non trovato!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$SCRIPT_DIR/sync-monitor.sh" ]]; then
|
|
echo -e "${RED}Errore: Script sync-monitor.sh non trovato!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}Script trovati:${NC}"
|
|
echo "✅ auto-sync.sh"
|
|
echo "✅ sync-monitor.sh"
|
|
echo
|
|
|
|
# Rendi eseguibili gli script
|
|
chmod +x "$SCRIPT_DIR/auto-sync.sh"
|
|
chmod +x "$SCRIPT_DIR/sync-monitor.sh"
|
|
|
|
echo -e "${GREEN}Script resi eseguibili${NC}"
|
|
echo
|
|
|
|
# Configurazione cron jobs
|
|
echo -e "${BLUE}Configurazione automatizzazione:${NC}"
|
|
echo
|
|
|
|
# Backup del crontab esistente
|
|
crontab -l > "$CRON_FILE" 2>/dev/null || echo "" > "$CRON_FILE"
|
|
|
|
# Aggiungi i nostri job (se non già presenti)
|
|
if ! grep -q "NetGescon Auto-Sync" "$CRON_FILE"; then
|
|
cat >> "$CRON_FILE" << EOF
|
|
|
|
# NetGescon Auto-Sync Jobs
|
|
# Sincronizzazione ogni 15 minuti (solo nei giorni lavorativi, ore 8-18)
|
|
*/15 8-18 * * 1-5 $SCRIPT_DIR/auto-sync.sh -m sync -v >> $HOME/netgescon/log/cron-sync.log 2>&1
|
|
|
|
# Backup completo ogni notte alle 2:00
|
|
0 2 * * * $SCRIPT_DIR/auto-sync.sh -m backup -t both -v >> $HOME/netgescon/log/cron-backup.log 2>&1
|
|
|
|
# Deploy completo ogni lunedì alle 6:00
|
|
0 6 * * 1 $SCRIPT_DIR/auto-sync.sh -m deploy -r -v >> $HOME/netgescon/log/cron-deploy.log 2>&1
|
|
|
|
# Monitoraggio dello stato ogni 5 minuti
|
|
*/5 * * * * $SCRIPT_DIR/sync-monitor.sh status >> $HOME/netgescon/log/cron-monitor.log 2>&1
|
|
|
|
# Pulizia log vecchi ogni domenica alle 3:00
|
|
0 3 * * 0 find $HOME/netgescon/log -name "*.log" -mtime +30 -delete 2>/dev/null || true
|
|
|
|
EOF
|
|
fi
|
|
|
|
# Installa il nuovo crontab
|
|
if crontab "$CRON_FILE"; then
|
|
echo -e "${GREEN}✅ Crontab aggiornato con successo${NC}"
|
|
else
|
|
echo -e "${RED}❌ Errore nell'aggiornamento del crontab${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Pulisci file temporaneo
|
|
rm -f "$CRON_FILE"
|
|
|
|
echo
|
|
echo -e "${BLUE}Jobs configurati:${NC}"
|
|
echo "• Sincronizzazione: ogni 15 minuti (lun-ven, 8-18)"
|
|
echo "• Backup completo: ogni notte alle 2:00"
|
|
echo "• Deploy completo: ogni lunedì alle 6:00"
|
|
echo "• Monitoraggio: ogni 5 minuti"
|
|
echo "• Pulizia log: ogni domenica alle 3:00"
|
|
echo
|
|
|
|
# Crea le directory necessarie
|
|
mkdir -p "$HOME/netgescon/log"
|
|
mkdir -p "$HOME/netgescon/backup/sync"
|
|
mkdir -p "$HOME/netgescon/reports"
|
|
|
|
echo -e "${GREEN}✅ Directory create${NC}"
|
|
echo
|
|
|
|
# Crea script di utilità
|
|
cat > "$SCRIPT_DIR/sync-utils.sh" << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# NetGescon Sync Utilities
|
|
# Script di utilità per la gestione della sincronizzazione
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
case "${1:-help}" in
|
|
"start")
|
|
echo "Avvio sincronizzazione manuale..."
|
|
"$SCRIPT_DIR/auto-sync.sh" -m sync -v
|
|
;;
|
|
"stop")
|
|
echo "Arresto processi di sincronizzazione..."
|
|
pkill -f "auto-sync.sh" || true
|
|
echo "Processi arrestati"
|
|
;;
|
|
"status")
|
|
"$SCRIPT_DIR/sync-monitor.sh" dashboard
|
|
;;
|
|
"logs")
|
|
tail -f "$HOME/netgescon/log/auto-sync.log"
|
|
;;
|
|
"backup")
|
|
echo "Avvio backup manuale..."
|
|
"$SCRIPT_DIR/auto-sync.sh" -m backup -t both -v
|
|
;;
|
|
"deploy")
|
|
echo "Avvio deploy manuale..."
|
|
"$SCRIPT_DIR/auto-sync.sh" -m deploy -r -v
|
|
;;
|
|
"clean")
|
|
echo "Pulizia log vecchi..."
|
|
find "$HOME/netgescon/log" -name "*.log" -mtime +7 -delete
|
|
echo "Pulizia completata"
|
|
;;
|
|
"report")
|
|
"$SCRIPT_DIR/sync-monitor.sh" html
|
|
;;
|
|
"cron")
|
|
echo "Crontab attuale:"
|
|
crontab -l | grep -A 10 -B 2 "NetGescon" || echo "Nessun job NetGescon trovato"
|
|
;;
|
|
"help"|*)
|
|
echo "NetGescon Sync Utilities"
|
|
echo
|
|
echo "Uso: $0 [COMANDO]"
|
|
echo
|
|
echo "Comandi:"
|
|
echo " start Avvia sincronizzazione manuale"
|
|
echo " stop Arresta processi di sincronizzazione"
|
|
echo " status Mostra dashboard stato"
|
|
echo " logs Visualizza log in tempo reale"
|
|
echo " backup Esegui backup manuale"
|
|
echo " deploy Esegui deploy manuale"
|
|
echo " clean Pulisci log vecchi"
|
|
echo " report Genera report HTML"
|
|
echo " cron Mostra crontab NetGescon"
|
|
echo " help Mostra questo aiuto"
|
|
;;
|
|
esac
|
|
EOF
|
|
|
|
chmod +x "$SCRIPT_DIR/sync-utils.sh"
|
|
|
|
echo -e "${GREEN}✅ Script di utilità creato: sync-utils.sh${NC}"
|
|
echo
|
|
|
|
# Crea link simbolici per accesso facile
|
|
if [[ -d "$HOME/bin" ]] || mkdir -p "$HOME/bin"; then
|
|
ln -sf "$SCRIPT_DIR/sync-utils.sh" "$HOME/bin/netgescon-sync" 2>/dev/null || true
|
|
echo -e "${GREEN}✅ Link simbolico creato: ~/bin/netgescon-sync${NC}"
|
|
fi
|
|
|
|
echo
|
|
echo -e "${BLUE}Setup completato!${NC}"
|
|
echo
|
|
echo -e "${YELLOW}Comandi utili:${NC}"
|
|
echo "• netgescon-sync status - Mostra stato"
|
|
echo "• netgescon-sync start - Sincronizzazione manuale"
|
|
echo "• netgescon-sync logs - Visualizza log"
|
|
echo "• netgescon-sync report - Genera report HTML"
|
|
echo
|
|
echo -e "${YELLOW}File di configurazione:${NC}"
|
|
echo "• $SCRIPT_DIR/config/sync-config.conf"
|
|
echo
|
|
echo -e "${YELLOW}Log directory:${NC}"
|
|
echo "• $HOME/netgescon/log/"
|
|
echo
|
|
echo -e "${GREEN}La sincronizzazione automatica è ora attiva!${NC}"
|