From 2b51d7882c9cd070544c0ac4afa996a5938c69b4 Mon Sep 17 00:00:00 2001 From: francesco Date: Tue, 21 Apr 2026 13:24:54 +0200 Subject: [PATCH] ++ Aggiunta funzione di backup e aggiornamento README.md --- .secret.example | 6 ++++-- README.md | 13 ++++++++++--- backup.sh | 52 +++++++++++++++++++++++-------------------------- init.sh | 10 ++++++++++ 4 files changed, 48 insertions(+), 33 deletions(-) diff --git a/.secret.example b/.secret.example index 196bbd3..f02d8c5 100644 --- a/.secret.example +++ b/.secret.example @@ -1,5 +1,7 @@ -# File di configurazione per le credenziali del database MySQL -# Rinominare questo file in .secret e inserire le credenziali reali +# File di configurazione per il backup +# Rinominare questo file in .secret.UTENTE e inserire i dati reali + +DOMAIN=dominio.com DB_HOST=localhost DB_NAME=nome_database diff --git a/README.md b/README.md index 980bedf..ca6cd46 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Script bash per eseguire il backup automatico di un database MySQL e della carte 2. Lo script ti chiederà: - Nome utente + - Dominio del sito (es. esempio.com) - Host del database (default: localhost) - Nome del database - Utente del database (default: nome del database) @@ -58,6 +59,11 @@ Esempio: ``` 3. Su cron manager inserisci: + ```bash + /home/UTENTE/cloudpanel-backup/backup.sh + ``` + + Oppure per un singolo sito: ```bash /home/UTENTE/cloudpanel-backup/core.sh UTENTE dominio.com ``` @@ -89,11 +95,12 @@ UPLOAD_URL="http://192.168.0.10:8080/upload" Per eseguire il backup di tutti i siti configurati: ```bash -chmod +x backup-siti.sh -./backup-siti.sh +chmod +x backup.sh +./backup.sh ``` -L'elenco dei siti è configurabile nell'array `SITES` dentro `backup-siti.sh`. +Lo script scopre automaticamente i siti dai file `.secret.*` presenti nella directory. +Ogni file `.secret.UTENTE` contiene il `DOMAIN` associato, quindi non serve mantenere elenchi manuali. ## Note di sicurezza diff --git a/backup.sh b/backup.sh index 0bb5ab3..1d74cdb 100644 --- a/backup.sh +++ b/backup.sh @@ -21,38 +21,29 @@ echo "Data: $(date '+%d-%m-%Y %H:%M:%S')" echo "==========================================" echo "" -# Array: "utente dominio" -SITES=( - "associazionecoach associazionecoach.com" - "qwince-adam adam.qwince.com" - "ainormanni ainormanni.com" - "cathedralroomandloft cathedralroomandloft.com" - "gdmantincendio gdmantincendio.it" - "greeningtech greeningtech.com" - "qwince-mercurio mercurio.qwince.com" - "farmasfera-sso-test portale-test-farmasfera.qwince.com" - "professionalvalue professionalvalue.it" - "puntofarma puntofarma.online" - "teleconsulto-sanita sanita.teleconsulto.online" - "studiolegaletodaro studiolegaletodaro.it" - "termanager termanager.pyconetwork.it" - "qwince-webcalcio webcalcio.qwince.com" - "akashido www.akashido.it" - "skillforequity www.skillforequity.com" - "concura concura.online" - "qwince qwince.com" - # TODO: aggiungere utente mancante - # "UTENTE neuralya.marketing" - # "UTENTE longevity.concura.online" -) - +# Scopri automaticamente i siti dai file .secret.* TOTAL=0 SUCCESS=0 FAILED=0 -for SITE in "${SITES[@]}"; do - USER=$(awk '{print $1}' <<< "$SITE") - DOMAIN=$(awk '{print $2}' <<< "$SITE") +for SECRET_FILE in "$SCRIPT_DIR"/.secret.*; do + # Ignora il file example + [ "$(basename "$SECRET_FILE")" = ".secret.example" ] && continue + [ ! -f "$SECRET_FILE" ] && continue + + # Estrai lo username dal nome del file (.secret.USERNAME) + USER=$(basename "$SECRET_FILE" | sed 's/^\.secret\.//') + + # Leggi il DOMAIN dal file + DOMAIN=$(grep -m1 '^DOMAIN=' "$SECRET_FILE" | cut -d'=' -f2-) + + if [ -z "$DOMAIN" ]; then + echo "⚠️ DOMAIN mancante in $SECRET_FILE, saltato" + FAILED=$((FAILED + 1)) + TOTAL=$((TOTAL + 1)) + echo "" + continue + fi TOTAL=$((TOTAL + 1)) @@ -71,6 +62,11 @@ for SITE in "${SITES[@]}"; do echo "" done +if [ $TOTAL -eq 0 ]; then + echo "Nessun file .secret.* trovato in $SCRIPT_DIR" + echo "Esegui ./init.sh per configurare un sito" +fi + echo "==========================================" echo "Backup terminato" echo "Totale: $TOTAL | Riusciti: $SUCCESS | Falliti: $FAILED" diff --git a/init.sh b/init.sh index d86466b..98ba11e 100644 --- a/init.sh +++ b/init.sh @@ -15,6 +15,14 @@ if [ -z "$USERNAME" ]; then exit 1 fi +# Richiedi dominio +read -p "Inserisci il dominio (es. esempio.com): " DOMAIN + +if [ -z "$DOMAIN" ]; then + echo "Errore: Dominio non può essere vuoto" + exit 1 +fi + echo "" echo "Configurazione database:" echo "------------------------" @@ -67,6 +75,7 @@ fi cp "$EXAMPLE_FILE" "$SECRET_FILE" # Sostituisci i valori nel file +sed -i "s/^DOMAIN=.*/DOMAIN=$DOMAIN/" "$SECRET_FILE" sed -i "s/^DB_HOST=.*/DB_HOST=$DB_HOST/" "$SECRET_FILE" sed -i "s/^DB_NAME=.*/DB_NAME=$DB_NAME/" "$SECRET_FILE" sed -i "s/^DB_USER=.*/DB_USER=$DB_USER/" "$SECRET_FILE" @@ -78,6 +87,7 @@ echo "File $SECRET_FILE creato con successo!" echo "==========================================" echo "" echo "Configurazione salvata:" +echo " - Dominio: $DOMAIN" echo " - Host: $DB_HOST" echo " - Database: $DB_NAME" echo " - Utente: $DB_USER"