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.