commit 997ade65a504894c0e2572dee3c0cba8c1a6b302 Author: fpicone Date: Thu Dec 11 16:35:17 2025 +0100 Primo caricamento diff --git a/.secret.example b/.secret.example new file mode 100644 index 0000000..196bbd3 --- /dev/null +++ b/.secret.example @@ -0,0 +1,7 @@ +# File di configurazione per le credenziali del database MySQL +# Rinominare questo file in .secret e inserire le credenziali reali + +DB_HOST=localhost +DB_NAME=nome_database +DB_USER=utente_mysql +DB_PASS=password_mysql diff --git a/README.md b/README.md new file mode 100644 index 0000000..eaad0d9 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# Script di Backup MySQL e htdocs + +Script bash per eseguire il backup automatico di un database MySQL e della cartella del sito web. + +## Configurazione + +1. Crea il file `.secret` nella stessa cartella dello script: + ```bash + cp .secret.example .secret + ``` + +2. Modifica il file `.secret` con le tue credenziali: + ```bash + DB_HOST=localhost + DB_NAME=nome_del_tuo_database + DB_USER=tuo_utente + DB_PASS=tua_password + ``` + +3. Rendi eseguibile lo script: + ```bash + chmod +x backup.sh + ``` + +## Utilizzo + +Esegui lo script specificando il dominio come parametro: +```bash +./backup.sh nome_dominio +``` + +Esempio: +```bash +./backup.sh esempio.com +``` + +## Cosa fa lo script + +1. Accetta il dominio come parametro da riga di comando +2. Legge le credenziali dal file `.secret` +3. Esegue il dump del database MySQL specificato +4. Copia la cartella `/home/utente_DOMINIO/htdocs/DOMINIO` +5. Crea un archivio ZIP contenente: + - Dump del database (formato .sql) + - Copia completa della cartella htdocs +6. Il file ZIP finale ha il formato: `backup_DOMINIO_YYYYMMDD_HHMMSS.zip` +7. Pulisce i file temporanei + +## Note di sicurezza + +- Il file `.secret` contiene credenziali sensibili +- Assicurati che abbia permessi appropriati: `chmod 600 .secret` +- Non versionare il file `.secret` su repository pubblici +- Aggiungi `.secret` al tuo `.gitignore` + +## Percorso delle cartelle + +Lo script costruisce automaticamente il percorso basandosi sul dominio fornito: +- Utente: `utente_DOMINIO` +- Percorso: `/home/utente_DOMINIO/htdocs/DOMINIO` + +Esempio per il dominio `esempio.com`: +- Percorso completo: `/home/utente_esempio.com/htdocs/esempio.com` diff --git a/backup.sh b/backup.sh new file mode 100644 index 0000000..f9612bb --- /dev/null +++ b/backup.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Script di backup per database MySQL e cartella htdocs +# Le credenziali del database devono essere nel file .secret +# Uso: ./backup.sh dominio + +# Verifica parametro dominio +if [ -z "$1" ]; then + echo "Errore: Specificare il dominio come parametro" + echo "Uso: $0 dominio" + echo "Esempio: $0 esempio.com" + exit 1 +fi + +DOMAIN="$1" + +# Ottieni la directory dello script +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SECRET_FILE="$SCRIPT_DIR/.secret" + +# Verifica che il file .secret esista +if [ ! -f "$SECRET_FILE" ]; then + echo "Errore: File .secret non trovato in $SCRIPT_DIR" + echo "Creare il file .secret con le seguenti variabili:" + echo "DB_HOST=localhost" + echo "DB_NAME=nome_database" + echo "DB_USER=utente" + echo "DB_PASS=password" + exit 1 +fi + +# Carica le credenziali dal file .secret +source "$SECRET_FILE" + +# Verifica che le variabili necessarie siano definite +if [ -z "$DB_HOST" ] || [ -z "$DB_NAME" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASS" ]; then + echo "Errore: Una o più variabili mancanti nel file .secret" + echo "Variabili richieste: DB_HOST, DB_NAME, DB_USER, DB_PASS" + exit 1 +fi + +# Configurazione +TIMESTAMP=$(date +"%Y%m%d_%H%M%S") +BACKUP_DIR="$SCRIPT_DIR/backup_${DOMAIN}_$TIMESTAMP" +SITE_DIR="/home/$(whoami)/htdocs/${DOMAIN}" +DB_DUMP_FILE="$BACKUP_DIR/database_$TIMESTAMP.sql" +ZIP_FILE="$SCRIPT_DIR/backup_${DOMAIN}_$TIMESTAMP.zip" + +# Crea directory di backup temporanea +echo "Creazione directory di backup..." +mkdir -p "$BACKUP_DIR" + +# Esegui dump del database +echo "Esecuzione dump del database $DB_NAME per il dominio $DOMAIN..." +mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$DB_DUMP_FILE" + +if [ $? -ne 0 ]; then + echo "Errore durante il dump del database" + rm -rf "$BACKUP_DIR" + exit 1 +fi + +echo "Dump del database completato: $DB_DUMP_FILE" + +# Verifica che la cartella del sito esista +if [ ! -d "$SITE_DIR" ]; then + echo "Attenzione: La cartella $SITE_DIR non esiste" + echo "Continuando solo con il backup del database..." +else + # Copia la cartella del sito + echo "Copia della cartella del sito..." + cp -r "$SITE_DIR" "$BACKUP_DIR/htdocs" + + if [ $? -ne 0 ]; then + echo "Errore durante la copia della cartella del sito" + rm -rf "$BACKUP_DIR" + exit 1 + fi + + echo "Cartella del sito copiata con successo" +fi + +# Crea archivio zip +echo "Creazione archivio zip..." +cd "$SCRIPT_DIR" +zip -r "$ZIP_FILE" "backup_${DOMAIN}_$TIMESTAMP" + +if [ $? -ne 0 ]; then + echo "Errore durante la creazione dell'archivio zip" + rm -rf "$BACKUP_DIR" + exit 1 +fi + +echo "Archivio zip creato: $ZIP_FILE" + +# Rimuovi la directory temporanea +echo "Pulizia file temporanei..." +rm -rf "$BACKUP_DIR" + +echo "" +echo "==========================================" +echo "Backup completato con successo!" +echo "File: $ZIP_FILE" +echo "Dimensione: $(du -h "$ZIP_FILE" | cut -f1)" +echo "=========================================="