Backup incrementali su un server RSYNC centralizzato

Una delle soluzioni più storicamente affidabili per effettuare backup incrementali in una Intranet è costituita dall’utilizzo di server RSYNC, sia su piattaforma Linux che Windows. In questa script d’esempio si presuppone di avere un server RSYNC già funzionante, protetto da password di accesso, verso il quale effettuare un backup incrementale settimanale.

Per prima cosa si definirà la directory di cui effettuare il backup, ad esempio la home dell’utente:

SRC_DIR=/home/$USER

Successivamente si specificherà il file che conterrà eventuali file o directory da escludere (anche mediante wildcard), il nome del server centrale di backup e quindi la relativa password di accesso, in questo modo:

EXCLUDES=/path/to/exclude_file
BACKUP_SERVER=server_name
export RSYNC_PASSWORD=server_password

A questo punto si sceglieranno i nomi delle directory di destinazione (è da notare come il comando date in combinazione con il flag A restituirà il nome del giorno della settimana per esteso) e le opzioni di backup come illustrato di seguito:

DST_DIR=`date +%A`
OPTS="--force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES --delete --backup --backup-dir=/$DST_DIR -a"

Prima di inviare il comando di backup vero e proprio, un’ulteriore serie di comandi verrà utilizzata per ripulire i backup incrementali relativi al giorno corrente della settimana precedente (se esistente) in questo modo:

mkdir $HOME/empty_dir
rsync --delete -a $HOME/empty_dir/ $BACKUP_SERVER::$USER/$DST_DIR/
rmdir $HOME/empty_dir

In pratica verrà creata localmente (e quindi alla fine rimossa) una directory vuota sulla base della quale il contenuto del giorno corrente verrà aggiornato (di conseguenza, essendo la directory vuota ed utilizzando il flag –delete, ciò significa che a tutti gli effetti la directory di destinazione verrà ripulita).

Finalmente siamo pronti ad avviare il backup con il comando rsync come specificato di seguito:

rsync $OPTS $SRC_DIR $BACKUP_SERVER::$USER/current

Al termine dell’esecuzione (e della settimana) si avrà, nel server centralizzato di backup, rispettivamente per ogni utente, una directory denominata current/ che conterrà il backup completo, mentre una directory per ogni giorno della settimana conterrà il relativo backup incrementale.