In sintesi
Il sistema integrato di backup, presente nelle recenti versioni di Plesk, si occupa egregiamente di definire dei backup incrementali sia dei siti ospitati sia dei database. In alcuni casi, tuttavia, può essere utile gestire in modo centralizzato il backup delle applicazioni e del database, ad esempio per poterli agevolmente archiviare o trasferire tramite uno script.
In questo scenario è utile definire uno script che, richiamato da un cronjob, permetta di eseguire in automatico il backup e la compressione di ogni host e di ogni database. Allo stesso tempo, per risparmiare prezioso spazio sull’HD, lo script dovrebbe automaticamente cancellare le copie vecchie del backup. In questo caso manterrà la copia recente e la copia del giorno prima
Creazione delle directory e dello script backup.sh
Per creare la directory è sufficiente digitare questi comandi in sequenza:
cd /
mkdir /backup
cd backup
touch backup.sh
chown +x backup.sh
Script di backup
È possibile incollare direttamente lo script sotto proposto utilizzando l’editor di testo nano.
nano backup.sh
A questo punto si aprirà l’editor dal quale sarà possibile inserire il codice sottostante che può essere personalizzato per avere maggiore controllo sul backup.
# !/bin/bash
##
##
## MYSQL
##
##
find /backup/* -type d -ctime +1 -exec rm -rf {} \;
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/$TIMESTAMP"
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD=""
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/mysql"
mkdir -p "$BACKUP_DIR/www"
databases=`$MYSQL --user=$MYSQL_USER -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
echo "[#] Backup MySQL ${db}"
$MYSQLDUMP --force --opt --user=$MYSQL_USER --databases $db | gzip > "$BACKUP_DIR/mysql/mysql-$db.gz"
done
##
## WEB
##
for dir in $(find /var/www/vhost/* -maxdepth 1 -type d )
do
base=$(basename "$dir")
echo "[#] Doing backup of ${base}"
tar -zcf "$BACKUP_DIR/www/${base}.tar.gz" $dir
done
Definire un cronjob
Il file backup.sh può essere richiamato dai cronjob di Linux. Il modo migliore per settare un nuovo cronjob è utilizzare l’interfaccia di Plesk.
Plesk > Tools & Settings & Scheduled tasks (Cron jobs) > Add task