FAQ - Come creare uno script di backup MySQL automatico?

Backup di cortesia

Sebbene effettuiamo regolarmente backup di cortesia, inclusi quelli dei database MySQL, è possibile creare ulteriori copie di sicurezza del proprio database in completa autonomia.

Questa guida spiega come creare uno script Bash per eseguire automaticamente il backup del database MySQL e come pianificarne l'esecuzione giornaliera tramite un cron job del cPanel.


⚠️ Avvertenza

Lo script riportato di seguito è un semplice esempio destinato a utenti esperti.

Non viene fornita assistenza relativamente alla realizzazione, modifica o personalizzazione di script Bash o di altri linguaggi di programmazione.


Creazione dello script di backup

Lo script, che chiameremo backup-mysql.sh, crea una copia del database MySQL e salva automaticamente il dump nella directory specificata.

Al termine elimina inoltre i backup più vecchi del numero di giorni configurato, evitando che lo spazio disco venga occupato inutilmente.

Per creare lo script:

1. Accedere al cPanel ed entrare nel File Manager.
2. Posizionarsi nella directory desiderata (ad esempio /home/username/) e creare un nuovo file chiamato backup-mysql.sh.
3. Aprire il file tramite Modifica ed incollare il seguente codice.
#!/bin/bash
 
# Configurazione
USER="INSERISCI_USERNAME_DEL_DATABASE"
PASSWORD="INSERISCI_PASSWORD_UTENTE_MYSQL"
DATABASE="INSERISCI_NOME_DATABASE"
BACKUP_DIR="INSERISCI_DIRECTORY_DESTINAZIONE"
GIORNI="INSERISCI_NUMERO_GIORNI_DA_MANTENERE"
DATE=$(date +%F_%H-%M-%S)
 
# Creo la directory se non esiste
if [ ! -d "$BACKUP_DIR" ]; then
  mkdir -p "$BACKUP_DIR"
fi
 
BACKUP_FILE="$BACKUP_DIR/backupDB_$DATE.sql"
 
# Backup del database
mysqldump -u "$USER" --password="$PASSWORD" "$DATABASE" > "$BACKUP_FILE"
 
# Elimino i backup più vecchi
find "$BACKUP_DIR" -type f -name 'backupDB_*.sql' -mtime +"$GIORNI" -delete

Terminata la modifica, salvare il file.


Configurazione dello script

Personalizzare i seguenti parametri:

USER Nome utente MySQL.
PASSWORD Password dell'utente MySQL.
DATABASE Nome del database.
BACKUP_DIR Directory nella quale salvare i backup.
GIORNI Numero di giorni per cui mantenere i backup.

Configurazione del cron job

Accedere alla sezione Processi Cron del cPanel.

1. Creare un nuovo cron job scegliendo una pianificazione giornaliera.
2. Nel campo Comando inserire:
bash /home/username/backup-mysql.sh >/dev/null 2>&1

Salvare il cron job.


Gestione automatica dei backup

Ad ogni esecuzione lo script crea un nuovo backup del database e cancella automaticamente quelli più vecchi del numero di giorni specificato nella variabile GIORNI.

Ad esempio, impostando GIORNI=5, verranno mantenuti solamente i backup degli ultimi cinque giorni, eliminando automaticamente quelli precedenti e impedendo che lo spazio disco venga occupato inutilmente.


Verifica del funzionamento

Dopo l'orario previsto verificare che nella directory di destinazione siano presenti i nuovi file di backup.

In caso di problemi verificare che:

- I dati di accesso al database siano corretti.
- La directory di destinazione sia scrivibile.
- Lo script abbia i permessi corretti.

Se il problema persiste, molto probabilmente dipende dal terminatore di riga del file.

Un errore tipico è:

bad interpreter: /bin/bash^M

In questo caso verificare che il file utilizzi il terminatore di riga Unix (LF). Con l'editor di testo gratuito Notepad++ è possibile convertirlo tramite Edit → EOL Conversion → Unix (LF).