FAQ - Come creare uno script di backup MySQL automatico?
Si premette che non viene offerto alcun tipo di assistenza in merito allo scripting in generale e che si tratta solo di uno script di esempio rivolto all'utenza avanzata in grado di comprenderlo e modificarlo laddove necessario in totale autonomia.
Creazione dello script di backup
Lo script di backup, lo chiameremo
backup-mysql.sh
, permette di creare una copia del priorio database MySQL e salvare il dump in una directory specificata. Oltre a eseguire il backup, lo script cancella poi automaticamente i file più vecchi di un numero specifico di giorni, garantendo che lo spazio di archiviazione non venga occupato inutilmente da backup troppo vecchi.Per creare lo script, basta seguire questi passaggi:
1. Creare il file dello script: Accedere al cPanel ed andare alla sezione File Manager. Navigare nella directory in cui si vuole salvare lo script (ad esempio,
/home/username/
) e creare un nuovo file chiamato backup-mysql.sh
2. Inserire il codice nello script: Dopo aver creato il file, cliccare su di esso, selezionare Modifica ed incollare il seguente codice all'interno del file:
#!/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)
# Controllo se la directory di backup esiste, altrimenti la crea
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# Percorso del file di backup
BACKUP_FILE="$BACKUP_DIR/backupDB_$DATE.sql"
# Esegui il dump del database
mysqldump -u "$USER" --password="$PASSWORD" "$DATABASE" > "$BACKUP_FILE"
# Cancello i backup più vecchi
find $BACKUP_DIR -name 'backupDB_*.sql' -type f -mtime +$GIORNI -delete
3. Configurare i parametri dello script: Personalizzare lo script inserendo i seguenti dettagli:
USER
: Il nome utente del database MySQL.PASSWORD
: La password dell'utente MySQL.DATABASE
: Il nome del database di cui si desidera fare il backup.BACKUP_DIR
: La directory in cui salvare i file di backup (ad esempio, /home/username/backup
).GIORNI
: Il numero di giorni per cui si vuole mantenere i backup (ad esempio, 5 per mantenere i backup degli ultimi 5 giorni).4. Configurazione di un cron job per l'esecuzione automatica
Ora che lo script è pronto, va configurato un cron job che lo esegua automaticamente ogni giorno. Basterà seguire i seguentipassaggi:
- Accedere al cPanel e cercare la sezione Processi Cron (Cron Job).
- Creare un nuovo cron job selezionando da Impostazioni Comuni l'opzione per eseguire lo script una volta al giorno (si può anche scegliere un orario specifico).
- Nel campo Comando, inserire il codice a seguire sostituendo il percorso con quello dello script:
bash /home/username/backup-mysql.sh >/dev/null 2>&1
- Salvare il cron job.
Il cron job eseguirà lo script automaticamente ogni giorno all'ora specificata, creando una copia di backup del proprio database MySQL nella directory specificata, inoltre lo script è configurato per cancellare automaticamente i backup più vecchi di un determinato numero di giorni, specificato nella variabile GIORNI. Ad esempio, impostando GIORNI=5, lo script eliminerà tutti i backup più vecchi di 5 giorni, lasciando solo quelli più recenti, evitando che lo spazio di archiviazione si riempia inutilmente con backup datati.
5. Verifica del corretto funzionamento
Per verificare che lo script funzioni correttamente, verificare che il cron job venga eseguito controllando la presenza di nuovi file di backup nella directory di destinazione dopo l'orario di esecuzione programmato.
In caso di problemi, verificare che:
- I dati di accesso al database siano corretti
- La directory di backup sia scrivibile
- I permessi del file siano impostati correttamente
Se il problema persiste molto probabilmente dipende dal teriminatore di riga dell'editor utilizzato, in tal caso bisogna accertarsi che sia Unix (LF). Un editor che consente di impostare il terminatore di riga è Notepad++, laddove si decidesse di utilizzarlo, basta andare su Edit > EOL Conversion > Unix (LF) per convertire il file.
Come si interrompe uno script PHP per un numero definito di tempo?
Per interrompere l'esecuzione di uno script PHP basta usare l'istruzione sleep. A seguire l'esempio.
<?php
sleep(60) // lo script riprenderà dopo 60 secondi
?>
Come si cambiano i permessi ad un file o cartella PHP?
E' possibile cambiare i permessi di un file solo su sistemi Linux/Unix. L'istruzione da utilizzare è chmod. A seguire l'esempio.
<?php
chmod ("percorso/file.html", 0777);
?>
Come impostare il fuso orario italiano in PHP?
Il modo più semplice e veloce è usare date_default_timezone_set purchè il server supporti PHP5, i nostri server sono aggiornati sempre all'ultima versione di PHP e...
Come sapere quale versione di PHP è installata sul server?
E' possibile usare phpinfo() oppure phpversion() , di seguito gli esempi di utilizzo.
<?php
phpinfo(); // Restituisce oltre alla versione tutta la configurazione di PHP
echo phpversion(); //Restituisce...