
Tag: Internet, Linux, Informatica, Sistemi Operativi, Reti.Visto 597 volte.
Il backup incrementale è un sistema di backup dei file che permette l'ottimizzazione delle risorse.
La tecnica consiste nel creare un full backup al primo lancio del backup, mentre a tutti i successivi generare solo dei file che descrivono i cambiamenti avvenuti.
Non è difficile intuire che attraverso questo sistema si ottiene una gestione dello spazio e della banda molto più efficiente.
Tale strategia, proprio per la sua ottimizzazione, viene utilizzata anche dai più famosi software per la gestione dello sviluppo collaborativo come Subversion.
In questo tutorial vedremo come implementare un servizio di backup incrementale automatizzato per cercare di preservare al meglio i nostri dati.
Il software che abbiamo scelto di presentare è un programma molto semplice, eseguibile da linea di comando, che integra però tutte le funzionalità necessarie.
Rdiff-backup ci permette sia di eseguire backup locali, utili per il ripristino immediato dei dati, sia backup geograficamente distribuiti offrendoci la possibilità di utilizzare svariati protocolli di trasferimento tra cui anche ssh.
Per chi fosse interessato a eseguire backup geograficamente distribuiti consigliamo di utilizzare su entrambi i nodi la stessa versione di rdiff-backup.
Vi proponiamo qui di seguito uno script tipo per lanciare rdiff:
Code:
HOSTNAME=$(hostname)
DATA=$(date +%Y/%m/%d)
ORA=$(date +%H:%M:%S)
DESTINATARI="mail1@email.com, mail2@email.com"
LAST_CORRECT_BACKUP="last-correct-backup"
PATH_FILE_TO_EXCLUDE="list-exclude-files"
PATH_FILE_TO_INCLUDE="list-include-files"
USER="user_l"
HOST="example.com"
REMOTE_PATH="/home/$USER/backup"
rdiff-backup --terminal-verbosity 0 --exclude-filelist $PATH_FILE_TO_EXCLUDE --include-globbing-filelist $PATH_FILE_TO_INCLUDE --exclude / / $USER@$HOST::$REMOTE_PATH
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
touch $LAST_CORRECT_BACKUP
else
echo -e "Backup terminato con errori!\nHostname: $HOSTNAME\nData: $DATA\nOra:$ORA" | mail -s "Errore Backup " $DESTINATARI -- -r "alert@$HOSTNAME"
fi
Quando viene eseguito lo script, rdiff-backup tenta di eseguire un backup - full la prima volta e solo incrementale le successive - sull'host settato nella variabile $HOST, con l'utente $USER nella path $REMOTE_PATH. Nel caso volessimo fare un backup locale basterà sostituire la stringa di path remota con una locale.
I file/dir che saranno backuppati sono quelli contenuti nel file
Code:
/home/user_l/documenti
/home/user_l/foto
/home/user_l/dati
mentre quelli esclusi sono quelli contenuti nel file
Code:
/home/user_l/.bash_history
/home/user_l/.Thunderbird
Per analizzare lo spazio occupato dal backup e le date/orari in cui è stato eseguito il backup possiamo utilizzare il seguente script:
Code:
DIR=/home/user_l/backup
rdiff-backup --list-increments $DIR
rdiff-backup --list-increment-size $DIR
che restituirà una analisi dettagliata dello spazio disco con tutte le date in cui il backup è stato eseguito.
Abbiamo inoltre, se è stato utilizzato lo script sopra illustrato, un file la cui data di modifica viene aggiornata con la data/ora dell'ultimo backup avvenuto correttamente. Tale file è quello specificato nella variabile $LAST_CORRECT_BACKUP, settata a LAST_CORRECT_BACKUP="last-correct-backup".
Per ripristinare per esempio la cartella foto allo stato di 3 giorni prima possiamo usare il seguente comando:
Code:
Questo crea una nuova cartella /home/user_l/foto.3d-ago con il contenuto aggiornato a 3 giorni prima.
C'è un altra procedura che possiamo eseguire per ripristinare il backup, o anche ogni singolo file ad un determinato incremento.
Per ottenere questo risultato dobbiamo navigare all'interno dell'albero di backup. Per prima cosa ci posizioniamo nella cartella relativa agli incrementi, che per il nostro esempio sarà:
Code:
in questa cartella, che è la root path del backup possiamo ripristinare l'intero tree di directory all'incremento voluto.
Se siamo invece interessati nei singoli file possiamo andare ancora più in profondità fino a giungere al file desiderato. Sia nel caso delle directory sia nel caso del file specifico ci troveremo ad operare con un file del tipo:
Code:
Nel caso dei file: <nome del file>.<data e ora>.diff.gz
e per ripristinare un file in questo modo possiamo dare il seguente comando:
Code:
Se volete fare il restore sovrascrivendo la cartella attualmente in uso ricordiamoci di passare a rdiff-backup il paramentro --force:
Code:
Possiamo quindi costruire uno script che soddisfa le nostre esigenze e inserirlo nel servizio cron per rendere il nostro backup automatico e sistematico.
Vi consigliamo di eseguire il backup anche su un backup server remoto, possibilmente connesso con openvpn, in modo da rendere i vostri servizi dei servizi di alta affidabilità e backuppati in maniera sicura e sistematica.
Tags
Apache Bash Elastix Firewall Firma digitale Geolocazione Grafica Informatica Internet Java Linux OpenMoko PHP Programmazione Python Reti Ricetta SEO Sicurezza Sistemi Operativi Varie Virtualizzazione VoIPLink ad altri blog:

