Rieccoci come promesso.
In questa guida illustrerò la configurazione di un server di backup, che in maniera del tutto automatica e ad intervalli prestabiliti, provveda ad effettuare le copie di sicurezza su un supporto esterno. Iniziamo.
I backup sono l’unica protezione alla perdita dei nostri dati, dunque è importante farli frequentemente, quantomeno ad ogni cambiamento delle informazioni memorizzate sul nostro pc; l’importante però è che il tutto avvenga in automatico, altrimenti la salvaguardia dei nostri files sarebbe condizionata dalla nostra attenzione, cosa non accettabile.
Secondo la legge di Murphy, la probabilità di perdere i nostri dati è inversamente proporzionale alla frequenza con cui ne facciamo i backup e direttamente proporzionale all’importanza degli stessi. Ecco quindi la necessità di creare un sistema automatico che pensi ad effettuare le copie di sicurezza e che consenta inoltre di avere delle “foto” della situazione a date diverse, per poter recuperare eventualmente le versioni precedenti di un documento o di un file.
Sotto linux è possibile realizzare tutto questo come al solito con poca spesa e tanta resa, tramite due programmi, Rsinc e Rsnapshot. Il primo consente di effettuare backup incrementali, andando a memorizzare solo ed esclusivamente le informazioni che sono cambiate rispetto al backup precedente; si pensi ad esempio ad un disco di 40Gb pieno di foto, effettuando un backup giornaliero andremmo a ricopiare tutto ogni volta, occupando tale spazio “n” volte se volessimo mantenere uno storico dei backup (ad esempio uno settimanale ed uno mensile); utilizzando invece Rsinc, si riesce ad avere un sistema incrementale dove nei successivi backup verranno scritti e salvati solo i dati che rispetto al precedente sono effettivamente cambiati, con notevole risparmio di tempo di esecuzione delle copie e di spazio su disco.
Il secondo programma, Rsnapshot, consente invece di creare backup a cadenza predefinita (oraria, giornaliera, settimanale, mensile) di una o più directory e salvarle dove l’utente preferisce (es. su un disco usb esterno).
L’unione fa la forza, quindi un sistema incrementale ripetuto con una periodicità predefinita ed altamente personalizzabile e soprattutto in modo completamente automatico fornisce la soluzione al problema che ci si era posti all’inizio.
Partiamo dunque sempre dal nostro server multifunzione visto qui.
Se avete una distribuzione Debian based, teoricamente entrambi i programmi dovrebbero essere già presenti nel sistema, altrimenti installateli.
Per quanto riguarda Rsnapshot, l’unico file di configurazione da editare è presente in /etc/ e si chiama guarda un po’ proprio rsnapshot.conf.
Prima di fare qualsiasi modifica, fatene una copia digitando
$ sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.original
Aprite con l’editor di testo il file così duplicato; le sezioni da variare sono poche, la più importante è
snapshot_root /directory_di_destinazione_backup/
Altra è quella relativa alla frequenza di backup, che trovate nella sezione #backup intervals#, qui è possibile impostare la cadenza di backup (oraria, giornaliera, settimanale e mensile) e quante copie conservarne (es daily 7 lascerà le copie degli ultimi 7 giorni, weekly 4 delle ultime 4 settimane, monthly 2 degli ultimi 2 mesi). La cadenza di rotazione è a scalare, ad esempio: backup giornaliero (lunedì – domenica) il lunedì successivo, il backup del lunedì precedente viene spostato su quello della settimana 1 e così via, dalla settimana 1 alla 2 fino a popolare lo slot dei mensili. In questo caso, ho selezionato solo la cadenza settimanale, commentando le altre voci.
Arriviamo quindi alla sezione #backup points# dove dobbiamo specificare la directory di cui fare il backup. Questa può essere una directory di sistema, oppure un disco di rete remoto. In quest’ultimo caso, al momento della partenza dello script il disco deve risultare montato altrimenti lo script darà errore.
Nel mio caso è necessario decommentare la prima riga sostituendola con
backup /punto_di_mount_da_salvare/ localhost/
Ovviamente, se altre directory fossero necessarie, decommentare e/o modificare le altre voci sottostanti. Per quanto riguarda Rsnapshot, abbiamo finito. Semplice, no?
Ora, dobbiamo dire al sistema quando eseguire i backup: per questo lavoro ci viene in soccorso il demone Cron, che lanceremo con
$ sudo crontab -e
modifichiamo la crontab come segue
Per il funzionamento e la sintassi di Cron, vi invito a leggere la relativa man-page.
Quindi, ogni giorno alle 12.00 il sistema parte con un aggiornamento dei file di sistema, alle 23.25 parte il mount automatico di tutte le unità indicate nel file fstab (nel caso alcune unità di rete di cui fare il backup nel frattempo si fossero disconnesse) alle 23.30 viene quindi eseguito il backup giornaliero. Alle 6 infine parte la sincronizzazione dell’ora di sistema con quella del server ntp (tramite ntpdate, se non c’è, installatelo altrimenti riceverete un bel messaggio d’errore quando cron tenterà dimandarlo in esecuzione), che consente di avere una precisione al decimo di secondo, importante se vogliamo che l’orario a cui partano le copie sia sempre quello.
Ultimamente c’è stata una recrudescenza del fenomeno dei cryptolocker, virus che cifrano il contenuto dell’hd chiedendo poi un riscatto per la decodifica. Fortunatamente, il fenomeno sembra confinato solo al mondo windows, ma se eseguito su una macchina linux possa comunque provocare danni anche se limitati alla sola directory home dell’utente. Ovvio che se il disco di backup o la directory dove questo viene immagazzinato fosse sempre montata ed accessibile non solo a root ma anche agli altri, tra cui l’utente che ha cliccato sull’allegato infetto, non ci sarebbero backup che tengano, anche tutte le copie verrebbero irrimediabilmente compromesse. La soluzione quindi consiste nel rendere accessibile in scrittura il disco su cui vengono effettuati i salvataggi solo per il periodo necessario all’operazione per poi rimetterlo in sola lettura per il resto del tempo. Tutto questo può essere fatto sempre tramite cron, nel modo seguente
mount -o remount,rw /directory_destinazione
[script di backup ]
mount -o remount,ro /directory_destinazione
Per il momento è tutto. Nella prossima guida vedremo le varie modifiche da apportare al sistema nel caso in cui la directory da salvare sia su un server Windows.