Primo caricamento
This commit is contained in:
7
.secret.example
Normal file
7
.secret.example
Normal file
@@ -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
|
||||
63
README.md
Normal file
63
README.md
Normal file
@@ -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`
|
||||
105
backup.sh
Normal file
105
backup.sh
Normal file
@@ -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 "=========================================="
|
||||
Reference in New Issue
Block a user