Rsnapshot: backup incrementale sincronizzato

14

rsnapshot

Effettuare il backup di dati, siano questi parte di una rete e quindi condivisi, siano questi personali, è sempre un tema delicato ed importante. Molte volte però, il singolo backup non è sufficiente. In alcuni ambiti ci si può trovare nella condizione non solo di recuperare un dato corrotto o cancellato, ma di recuperarlo relativamente ad una precisa data. Nasce quindi l’esigenza di avere uno strumento che permetta di archiviare i dati organizzandoli in una forma incrementale e facilmente reperibile.
Questo articolo spiega come utilizzare il software opensource rsnapshot per la schedulazione di backup incrementali realizzati attraverso l’utilizzo del software rsync ed il meccanismo degli snapshot.

Concetto di snapshot

Lo snapshot di un file rappresenta una versione dello stesso in un determinato tempo. Sostanzialmente, al file attuale corrispondono altre versioni associate a periodi ben definiti, che generalmente sono ore, giorni o mesi.
Attraverso lo snapshot è quindi possibile non solo recuperare un file danneggiato o addirittura cancellato (in questo caso senza una versione attuale), ma anche effettuare un confronto tra quello che è il file attuale ed una sua versione precedente.

Installazione di rsnapshot

rsnapshot è presente in tutte le maggiori distribuzioni, nel caso relativo a quest’articolo il sistema di riferimento è Debian Etch e l’installazione è effettuabile attraverso apt-get:

$ apt-get install rsnapshot
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
I seguenti pacchetti verranno inoltre installati:
  rsync
I seguenti pacchetti NUOVI (NEW) saranno installati:
  rsnapshot rsync
0 aggiornati, 2 installati, 0 da rimuovere e 1 non aggiornati.
E' necessario prendere 391kB di archivi. 
Dopo l'estrazione, verranno occupati 969kB di spazio su disco.
Continuare [S/n]? 
...
...

E’ da notare come l’installazione richieda come dipendenza rsync, software che in pochissime parole si occupa di sincronizzare una sorgente (sia essa un file, più file o una directory) con una destinazione.

Configurazione di rsnapshot

Le impostazioni di rsnapshot sono contenute nel file /etc/rsnapshot.conf, delle opzioni configurabili in esso contenute quelle che interessano per iniziare ad utilizzare il programma sono le seguenti:

snapshot_root	/backups/

snapshot_root indica dove risiederanno i backup archiviati, in questo caso la directory “/backups/”

backup	/etc/		localhost/

backup definisce di quali dati effettuare il backup (in questo caso /etc/) ed in quale sotto directory questi saranno posti (localhost/).
E’ da notare come al posto di “/etc/” possano essere anche passati indirizzi di tipo ssh (root@example.com:/etc/) e rsync (rsync://example.com/pub/).

interval	daily	7

interval definisce l’intervallo daily, al quale sono associate sette rotazioni. E’ da notare che il nome dell’intervallo definisce unicamente un identificativo arbitrario deciso dall’utente, e non vincola in alcuna maniera il funzionamento che è controllato unicamente dal numero di rotazioni.
Infatti alla configurazione di rsnapshot, coerentemente, andrà associata la configurazione del cron di sistema. Tale impostazione può essere abilitata de-commentando la riga relativa nel file /etc/cron.d/rsnapshot che è compilato con le impostazioni di default (tutte commentate):

# 0 */4		* * *		root	/usr/bin/rsnapshot hourly
30 3  	* * *		root	/usr/bin/rsnapshot daily
# 0  3  	* * 1		root	/usr/bin/rsnapshot weekly
# 30 2  	1 * *		root	/usr/bin/rsnapshot monthly

che prevede il lancio del comando rsnapshot con intervallo daily da parte dell’utente root alle 3:30 AM di OGNI giorno.

Come funziona rsnapshot

rsnapshot è configurato quindi per archiviare i dati nella cartella /backups/ al di sotto della quale vengono organizzati i dati relativamente agli intervalli definiti. Il meccanismo è piuttosto semplice e comprende l’impiego di tre componenti:

  1. il primo è il cron di sistema, attraverso il quale viene definito quando rsnapshot va lanciato,
  2. il secondo è rsync che è utilizzato da rsnapshot per effettuare il backup dei soli file modificati,
  3. il terzo è lo stesso rsnapshot che struttura le cartelle partendo dall’intervallo definito.

Dopo almeno una settimana (o comunque dopo almeno sette lanci manuali del comando) la cartella /backups/ avrà il seguente contenuto (ordinato cronologicamente):

$ ls -lrt /backups/
totale 28
drwxr-xr-x 3 root root 4096 2009-02-24 04:17 daily.6
drwxr-xr-x 3 root root 4096 2009-02-25 05:06 daily.5
drwxr-xr-x 3 root root 4096 2009-02-26 03:43 daily.4
drwxr-xr-x 3 root root 4096 2009-02-27 04:42 daily.3
drwxr-xr-x 3 root root 4096 2009-02-28 03:46 daily.2
drwxr-xr-x 3 root root 4096 2009-03-01 03:45 daily.1
drwxr-xr-x 3 root root 4096 2009-03-02 03:45 daily.0

All’interno della cartella “daily.0” ci sarà la copia attuale dei dati mentre nelle cartelle associate ai giorni precedenti ci saranno, se esistono, le versioni precedenti, altrimenti lo stesso identico file non avendo questo subito variazioni.
In sostanza ciascuna cartella rappresenta un intero snapshot del giorno.
Ecco qual’è la sequenza di operazioni eseguite da rsnapshot :

$ rsnapshot -v daily
echo 2614 > /var/run/rsnapshot.pid 
/bin/rm -rf /backups/daily.6/ 
mv /backups/daily.5/ /backups/daily.6/ 
mv /backups/daily.4/ /backups/daily.5/ 
mv /backups/daily.3/ /backups/daily.4/ 
mv /backups/daily.2/ /backups/daily.3/ 
mv /backups/daily.1/ /backups/daily.2/ 
/bin/cp -al /backups/daily.0 /backups/daily.1 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc 
    /backups/daily.0/localhost/ 
touch /backups/daily.0/ 
rm -f /var/run/rsnapshot.pid 

La sequenza è piuttosto autoesplicativa:

  • linea 2: Viene settato il file relativo al pid del processo;
  • linea 3: Viene rimossa la directory più anziana che è daily.6;
  • linee 4-7: Vengono rinominate le altre directory in modo da ottenere la rotazione fino alla directory daily.2;
  • linea 8: La directory daily.0 viene copiata con le opzioni -al nella directory daily.1.
    Tali opzioni sono “-a” che consente di conservare nella copia tutto il possibile della struttura e degli attributi dei file originali (quindi permessi e proprietari) e “-l” che esegue collegamenti fisici (hard link) piuttosto che copie dei file. Entrambe le opzioni operano sui soli file, la struttura delle directory viene ricostruita tale e quale.
  • linea 9: Viene lanciato il comando rsync con sorgente la cartella originale /etc e destinazione la cartella /backups/daily.0
  • linea 10: Viene rimosso il file relativo al pid del processo;

La cosa interessante, che sta alla base del funzionamento di rsnapshot è il modo in cui le versioni vengono archiviate. Infatti la copia della directory daily.0 nella daily.1 avviene attraverso degli hard link, cioè file con lo stesso inode. Questo tipo di funzionamento favorisce l’ottimizzazione dello spazio su disco, archiviando di fatto per ogni directory, solo gli effettivi file variati.

Nota relativa agli hard link

Un hard link nel momento in cui è creato, è lo stesso file da cui deriva. Una modifica al link equivale ad una modifica sul file originale.
Un hard link è riconoscibile attraverso l’utilizzo dell’opzione “-l” del comando ls e fa riferimento alla seconda colonna del listato:

$ ls -l /backups/daily.0/localhost/etc/crontab 
-rw-r--r-- 7 root root 837 2009-02-04 12:59 /backups/daily.0/localhost/etc/crontab

l’output di “ls -l” indica come relativamente al file /backups/daily.0/localhost/etc/crontab esistano sette copie dello stesso (che fanno riferimento alle sette directory snapshot). Il valore di sette relativo a questo file indica oltretutto che negli ultimi sette giorni tale file non ha subito variazioni.

Conclusioni

rsnapshot è uno strumento di facile comprensione, rapido da installare e capire che può essere impiegato nei più svariati ambiti riguardanti i backup.
E’ facile capire come siano definibili tutta una serie di intervalli e schedulazioni per avere la gestione degli snapshot associata ad un numero sempre crescente di dati e situazioni.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

14 risposte a “Rsnapshot: backup incrementale sincronizzato”

  1. Avatar maurizio

    scopro oggi il vostro sito grazie a ziobudda e spero sarete contenti nel sapere che siete subito finiti nel mio aggregatore.

    vi faccio però una richiesta:
    è possibile avere il vostro feed in maniera completa?

    sicuro di una vostra maggiore apertura vi ringrazio per tutto quanto avete scritto sino a oggi.

    cià

  2. Avatar Raoul Scarazzini

    Ciao Maurizio e benvenuto su MMUL!
    Ci fa certamente piacere sapere di avere qualcuno che ci segue. Per quanto riguarda i Feed l’indirizzo http://www.miamammausalinux.org/feed/ contiene l’elenco di tutti gli articoli recenti con relativi link. Quando parli di “maniera completa” cosa intendi esattamente?
    Un saluto ed a presto!

  3. Avatar maurizio

    wordpress è in grado di gestire i feed pubblicando gli articoli in forma completa oppure tagliandoli dopo n caratteri.

    purtroppo nel vostro caso tutti i vostri contenuti sono limitati al “riassunto” automatico di wordpress rendendone impossibile la lettera attraverso il mio rssreader.

    nel caso non si trattasse di una scelta “editoriale” mi piacerebbe leggervi in forma completa. (menu impostazioni->impostazioni lettura)

    grazie
    maurizio

  4. Avatar Raoul Scarazzini

    Ciao Maurizio, ora è chiaro cosa intendi e ti rispondo che la questione è stata considerata a suo tempo, ma si è poi optato per il “riassunto” degli articoli per rendere il più veloce possibile poi la consultazione degli stessi.
    Essendo la gamma degli argomenti trattati ampissima ci sembra più funzionale avere un riassunto che dia la possibilità di approfondire i temi di interesse sul sito effettivo.
    Spero che questa cosa non ti allontani da MMUL, continua a seguirci, mi raccomando!

  5. Avatar maurizio

    Posso suggerire l’adozione di entrambe le opzioni in modo che sia l’utente che vi legge a decidere?
    grazie ancora 😉

  6. Avatar Raoul Scarazzini

    Ciao Maurizio,
    esiste un plugin particolare di wordpress che permetta questo tipo di utilizzo dei feed? Oppure è una cosa che va gestita mettendo mano al codice?

  7. Avatar maurizio

    con una veloce ricerca ho trovato questo:
    http://wordpress.org/extend/plugins/private-rss/

    me penso che esistano anche altri sistemi.
    grazie per la pazienza.

  8. Avatar Raoul Scarazzini

    Ciao Maurizio,
    alla fine ho optato per questo fantastico plugin : Dualfeeds.
    E direi che adesso la scelta è dei lettori 🙂
    Grazie per i preziosi suggerimenti e continua a seguirci e perché no… A collaborare con noi.

    A presto!

  9. Avatar Gianpaolo
    Gianpaolo

    E’ possibile installare il processo su una macchina e fare il bk di un’altra macchina?
    esempio installo il programma sulla mia macchia e mi backuppo le cartelle della macchina che tengo in ufficio

  10. Avatar Raoul Scarazzini

    Assolutamente sì. Devi solo fare in modo che la macchina che ospiterà il backup renda in qualche modo visibile il proprio file system alla macchina che lancerà il backup.
    Il metodo è indifferente: NFS, SAMBA, quello che preferisci. Per comunicare si potrebbe pensare ad una VPN con openVPN. Ma la risposta è comunque sì, si può fare.
    Ciao!

  11. Avatar Fabio

    Ciao Raul, è possibile eseguire il backup tramite ssh verso una machina che fa da server? Non sono riuscito a trovare nulla in merito!

    Fabio

    p.s. ti ricordi di me? rholug ti dice qualcosa? 😀 😀

  12. Avatar Raoul Scarazzini

    We Fabio,
    certo che mi ricordo, tra l’altro… Il Rholug che fine ha fatto? Per quanto riguarda rsnapshot via ssh questa settimana ho giusto in programma due prove sull’argomento. Appena realizzo una procedura standard… la documento!

    A presto!

  13. Avatar Fabio

    Bè inizialmente eravamo confluiti nel milug che aveva aperto la sede a Rho poi io e Titti siamo migrati nel semlug ( http://www.semlug.org ) geograficamente più vicino a noi. La lista rholug è ancora attiva ma da anni non è utilizzata.
    Attendo i tuoi test 🙂

    Fabio

  14. Avatar Rickyx
    Rickyx

    Bella guida!

    Segnalo inoltre l’utile l’opzione -c che permette di utilizzare un file di configurazione opzionale, nel caso, per esempio, di voler utilizzare diverse “snapshot_root” per diversi backup.

    Ciao!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *