Sulla falsariga dello script per il backup automatico di un database, ho deciso di crearne uno che effettua periodicamente il backup di un sito Web (un pò come avviene con gli hosting provider).
Ecco il codice:
#!/bin/bash
datasito=$(date +"%d_%b_%y")
montaggiosito=$(mount | grep /media/disk)
#File di log
FILELOG=/var/log/backupmiosito
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ];then
ERRORE1="Errore 1: Devi essere root per eseguire lo script"
echo $ERRORE1
echo "$(date) $ERRORE1" >> $FILELOG
exit 1
fi
if [ ! -n "$montaggiosito" ]; then
mount /media/disk
fi
if [ ! -d /media/disk/backup/miosito ]; then
cd /media/disk
mkdir /media/disk/backup/miosito
fi
cd /media/disk/backup/miosito
mkdir backup_$datasito
cp -r /var/www/miosito /media/disk/backup/miosito/backup_$datasito
exit 0
Come potete notare, tale script si differenzia da quello per il backup del database sono nelle ultime righe (e per qualche nome assegnato alle variabili). Nella fattispecie, il comando cp -r /var/www/miosito /media/disk/backup/miosito/backup_$datasito non fa altro che copiare tutto il contenuto della directory /var/www/miosito (comprese le sottodirectory, grazie alla flag -r) in /media/disk/backup/miosito/backup_$datasito.
Rendo eseguibile lo script, digitando sudo chmod +x backupsito e successivamente lo copio nella cartella /usr/bin mediante il comando sudo cp /backupsito /usr/bin.
Ora, tale script può essere eseguito ad intervalli di tempo regolari, semplicemente inserendo la seguente istruzione nel file crontab presente nella directory /etc:
0 21 * * * root backupsito > /dev/null 2>&1
ed il gioco è fatto.
See ya.