Home > eTRAYz > eTRAYz – Semplice SCRIPT per backup incrementale con rsync

eTRAYz – Semplice SCRIPT per backup incrementale con rsync

9 febbraio 2011

Sperando di fare cosa gradita, visto che a me è costato diverse nottate, per chi fosse interessato a fare in modo che l’Etrayz effettui periodicamente ed automaticamente dei backup incrementali (e quindi risparmiando notevolmente spazio) può utilizzare il seguente script che ho messo a punto grazie all’aiuto di un AMICO

L’etrayz purtroppo non dispone di una propria utility interna per fare questo tipo di operazione che ritengo importantissima per un NAS che si rispetti, ma almeno ha già integrato il comando rsync che sfrutteremo con il seguente script.

#/bin/bash
# ****************************************************
# Script per backup incrementale con il comando Rsync
# by Michele Nasoni e Flavio Anesi (Flane)
# ****************************************************
#VARIABILI
# La directory di origine di cui fare il backup
DIR_DATI="/home/Public/Mia cartella/"
# La directory di destinazione dove mettere i file di backup
# qui effettua il backup sul disco esterno USB
DIR_BACKUP_INC="/External/USB1/part1/Backup/"
# La data , se volete un backup orario aggiungete %H_%M
data=`date "+%Y-%m-%d"`
# File di LOG
LOG=$DIR_BACKUP_INC/backup.log
# ****************************************************
# BACKUP
# Controllo per backup totale o differenziale
if [ "$1" == "totale" ]; then
TIPO_BK=""
echo $(date +%d/%m/%Y) - Backup TOTALE | cat >> $LOG
else
TIPO_BK="--link-dest=../precedente"
echo $(date +%d/%m/%Y) - Backup INCREMENTALE | cat >> $LOG
fi
echo $(date +%H:%M.%S) BACKUP - Inizio sincronizzazione .... | cat >> $LOG
# Inizio Backup
# Sincronizza tenendo in considerazione quello che è stato già copiato
rsync -aP -delete $TIPO_BK $DIR_DATI $DIR_BACKUP_INC/back-$data
rm -f $DIR_BACKUP_INC/precedente
ln -s $DIR_BACKUP_INC/back-$data  $DIR_BACKUP_INC/precedente

#Fine log
echo $(date +%H:%M.%S) BACKUP - Fine sincronizzazione | cat >> $LOG

Lo Script esegue quanto segue:

  • Backup della cartella origine DIR_DATI verso la cartella destinazione DIR_BACKUP_INC (nell’esempio nel disco esterno USB)
  • File di log backup.log nella cartella destinazione DIR_BACKUP_INC, con la sequenza di data ed ora dei backup effettuati
  • Il primo Backup è un backup totale dei dati mentre i successivi saranno incrementali
  • Lo script sfrutta gli hard link di linux, pertanto per funzionare necessita che il disco di destinazione sia formattato in EXT e non FAT o NTFS

E’ possibile forzare l’esecuzione di un backup totale lanciando lo script con il suffisso “totale”, cioè eseguendo:

backup.sh totale

Il vantaggio di questo script è che nei backup successivi al primo, vengono copiati solo i file modificati, mentre gli altri file sono dei link (hard link) ai backup precedenti.
In questo modo, pur sembrando sempre un backup totale (si vedono sempre tutti i file) lo spazio utilizzato nei backup successivi è solo quello dei file modificati.

Come visibile nel link riportato all’inizio lo script è anche personalizzabile per dei backup remoti.

Naturalmente la cosa può essere automatizzata inserendo un’apposita riga in crontab perchè venga eseguito automaticamente con la periodicità voluta.
Ad esempio per fare in modo che tutti i giorni alle 16.00 venga fatto un backup basta inserire la seguente riga nel file /etc/crontab

0 16 * * * root /home/backup.sh

Spero che possa essere utile a qualcuno.

NOTA: Fate attenzione che se avete attivato la modalità Sleep per l’hard disk interno o esterno, e programmate tramite cron il backup,  cron non funzionerà :sad:

Buon Lavoro a tutti ;-)

Ti potrebbero interessare:

Categorie:eTRAYz
I commenti sono chiusi.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi