RSnapshot backup remoto via SSH
In questi giorni ho scoperto RSnapshot, tool di backup che si basa su RSync, è diventato da subito il mio programma di backup preferito per i sistemi Linux. La facilità di configurazione e la semplicità di utilizzo lo rendono senza dubbio il software perfetto anche per chi non mastica molto i sistemi del pinguino.
Come funziona RSnapshot? Semplice in un file di configurazione si scrive cosa backuppare, si specifica la frequenza ed infine si inserisce una stringa nel cron per attivarlo, al resto pensa tutto lui (rotazione dei backup, copia incrementale etc..). Io sto utilizzando RSnapshot su un mio sistema casalingo (il mio nslu2 con su Debian ehehe) per effettuare tutti i giorni il backup del mio blog in maniera automatica.
Ma veniamo al sodo, cioè alla caratteristica più interessante di RSnapshot, basandosi su RSync la qualità più pregiata di RSnapshot stà nel backup incrementale nativo. Il nome stesso del programma ci viene in aiuto per spiegare meglio il concetto di: “backup incrementale nativo”, se ad esempio vogliamo fare un backup di un file o meglio uno snapshot cioè una foto del file e vogliamo fare questo backup ogni sera abbiamo due possibilità:
- Sovrascriviamo ogni giorno il backup precedente.
- Conserviamo ogni copia di backup del file effettuata per un periodo di tempo prestabilito, questo concetto prende il nome di retention.
Con il primo sistema abbiamo solo una “foto” del file del giorno precedente e risparmiamo un sacco di spazio perchè archiviamo ogni volta una sola copia del file, con il secondo metodo invece occupiamo tanto spazio perchè abbiamo tante “foto” ma in compenso possiamo confrontare le varie versioni del file tra di loro per studiare eventuali cambiamenti o possiamo tornare ad un situazione del file che risale non più al giorno precedente ma magari anche ad una settimana fà, tutto dipende da quante copie del file teniamo.
Ora mettiamo che vogliamo fare ogni giorno il full backup di una directory e che vogliamo avere una retention di 7 giorni. Un normale programma di backup farebbe 7 copie della stessa directory anche se i file non fossero mai alterati occupando 7 volte lo stesso spazio inutilmente.
RSnpashot invece controlla se la directory e i file in essa contenuti sono stati modificati e solo se rileva modifiche effettua una copia di backup. La cosa bella però è che nella directory dove vengono depositati i backup crea una struttura trasparente tale per cui in ogni directory del giorno sono presenti tutti i file, come in una normale copia full. Mi spiego meglio, vengono backuppati i file come in un backup incrementale ma poi la struttura di directory e tutto il resto viene mostrato come in Full backup.
Nel caso di un backup di 7 giorni viene creata questa struttura:
/mnt/backup/daily.0/ /mnt/backup/daily.1/ /mnt/backup/daily.2/ /mnt/backup/daily.3/ /mnt/backup/daily.4/ /mnt/backup/daily.5/ /mnt/backup/daily.6/
Mettiamo il caso che i file non vengano mai modificati per tutti i 7 giorni e che la directory pesi 50 mb , con un sistema classico avremmo 7 x 50 , 350 mb di spazio occupato inutilmente.
Con RSnapshot invece vengono occupati sono 50mb e nelle varie directory viene mostrato sempre lo stesso contenuto. Il trucchetto se così lo vogliamo chiamare stà negli hard-link (collegamenti fisici, vedi wikipedia) con il quale lavora RSnapshot, essi permettono di creare dei link ai file totalmente trasparenti per l’utente. RSnapshot quindi crea hard-link diversi che puntano sempre allo stesso file.
Tornando al nostro esempio, mettiamo che modifichiamo un file dentro la nostra directory al giorno 3, RSnapshot effettuare un backup full solo del file modificato creando un apposito hardlink nella directory /mnt/backup/daily.3/ verso il nuovo file backuppato, tutti gli altri file non modificati saranno gli stessi delle directory daily.1 e daily.2 e ovviamente essendo hard-link occuperanno solo una volta spazio su disco.
Del nuovo file di cui è stato appena fatto un backup ne esisteranno due versioni.
Ah ovviamente tutti gli hard-link nelle directory daily verranno mostrati come veri e propri file, cioè l’utente finale vede i dati come se fossero i file autentici, per riconoscere un file da un hard-link basta digitare il comando:
ls -l
Di fianco ai permessi sui file vedrete il numero di hardlink verso lo stesso file,banalmente il numero di copie indica anche le volte in cui il file non è stato cambiato.
Allo scadere dei 7 giorni, poi verrà tenuta la versione più recente di ogni file presente nella directory backuppata e il giro ricomincerà da capo.
Spero di essermi spiegato bene, comunque in rete c’è una marea di documentazione su RSnapshot quindi potete farvi una cultura..
Ma veniamo al mio caso specifico,io utilizzo RSnapshot per fare il backup full del mio blog, la retention che ho impostato è di 7 giorni, questo vuol dire che se ogni giorno modifico modifico lo stesso file alla fine mi ritroverò con 7 versioni differenti.
Utilizzo il mitico NSlu2 su cui ho montato Debian, ed ogni notte in maniera del tutto automatica viene effettuato il backup.
Passiamo agli aspetti tecnici.
Come installare RSnapshot, il mio sistema di riferimento è Debian, ecco i comandi:
apt-get install rsnapshot
In automatico verrà anche installato rsync, verrà poi creato un file di configurazione in /etc/ di nome rsnapshot.conf.
All’interno di rsnapshot.conf si configurano tutti i parametri di backup. La prima cosa da fare è configurare la backup policy, cioè ogni quanto effettuare il backup, ogni giorno? ogni ora? lo impostate alla voce “Interval”.
Ecco un esempio:
interval hourly 6 interval daily 7
La prima riga dice di fare un backup ogni ora con una retention di 6 versioni, vuol dire che ogni file backuppatto ha una vita di 6 ore.
La seconda riga indica di fare un backup ogni giorno con una retention di 7 versioni, ogni file quindi rimane conservato per 7 giorni.
Per impostare cosa backuppare dovete cercare la voce: snapshot_root e impostarla come segue:
snapshot_root /backup/
Con questa stringa dite a RSnapshot di depositare tutti i backup all’interno della directory /backup/
Veniamo infine alla parte più interessane, cosa backuppare, basta cercare la stringa “backup”, ecco un esempio:
backup /var/www/sitointernet/
Abbiamo detto ad RSnapshot di backuppare la directory /var/www/ e di mettere il backup creato nella directory sitointernet sotto la snapshoot_root /backup/)
Riassumiamo un attimo i semplici parametri che abbiamo inserito:
interval daily 7 snapshot_root /backup/ backup /var/www/sitointernet/
Tradotto in parole: ogni giorno fai un backup di tutta la directory /var/www/ e tieni ogni copia di backup per sette giorni depositandola nella directory /backup/sitointernet/
Dopo 7 giorni la struttura di directory sarà la seguente:
/backup/sitointernet/daily.1/ /backup/sitointernet/daily.2/ ..... /backup/sitointernet/daily.6/ /backup/sitointernet/daily.7/
Rimane da attivare RSnapshot modificando il file /etc/cron.d/rsnapshot togliendo il cancelletto alla stringa che contiene la parola Daily ed eventualmente modificando l’ora di esecuzione del backup.
# 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
In questo esempio preso dalla configurazione di default di RSnapshot ogni giorno alle ore 3.30 AM viene eseguito il backup.
Prima di passare oltre alcuni consigli molto importanti:
- Nel file di configurazione di RSnapshot non inserite mai spazi ma solo tabulazioni (premete TAB al posto della barra spaziatrice)
- Dopo aver modificato il file utilizzate il comando qui sotto indicato per verificare che non ci siano errori:
rsnapshot configtest
Dopo aver fatto tutte le verifiche del caso siete pronti per effettuare un test lanciando:
rsnapshot -v dailySe tutto è andato per il verso giusto inizierà il backup.
Come dicevo sopra però io eseguo il backup di una macchina remota, rsnapshot supporta il backup via ssh, basta configurare l’accesso ssh con il sistema di chiavi pubbliche/private quindi senza l’inserimento di password.
Ecco quindi i passi per utilizzare rsnapshot per fare un backup via ssh.
- Per prima cosa andate sulla macchina remota del quale dovrete fare il backup e assicuratevi che sshd sia attivo e funzionante, nel caso non sia presente installate ssh con il comando:
apt-get install ssh,openssh-server
- Controllate il file di configurazione di sshd posizionato in /etc/ssh/ di nome sshd_config e controllate che queste due righe siano decommentate, cioè che davanti non sia presente il carattere # :
-
RSAAuthentication yes -
PubkeyAuthentication yes
-
- Riavviate il demone ssh:
service sshd restart
- Dal vostro client generate le chiavi pubbliche con il comando:
ssh-keygen -t rsa
- Quando vi viene chiesto di inserire una password battete invio altrimenti il collegamento automatico tra le due macchine client-server non potrà avvenire.
- Caricate la chiave generata dal client sul server con il comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@server-remoto.it
- Effettuate un test per verificare che il collegamento tra client e server non richieda password con il comando:
ssh server-remoto.it uptime
- Il risultato del comando precedente dovrà essere il classico uptime e non vi sarà chiesta la password.
Con questo sistema di chiavi non verrà chiesta la password e il sistema client avrà pieno accesso al server remoto. Per tutti i pro / contro di questo sistema cercate pure in rete.
Una volta stabilito un collegamento di tipo Password less login con ssh potete modificare il file di configurazione di Rsnapshot come segue:
backup root@server-remoto.it:/var/www/ sitointernet/
Con questa stringa di configurazione diciamo a RSnapshot di fare il backup della cartella /var/www/ di server-remoto.it e di depositare i backup dentro la cartella /sitointernet/.
Nel caso RSnapshot non avesse già configurato il path dell’eseguibile ssh aprite il file di configurazione, cercate la stringa cmd_ssh ed impostatela come segue:
cmd_ssh /usr/bin/ssh
Bene direi che è tutto, RSnapshot offre molte atre opzioni tra le più utili l’exclude o l’include per escludere o includere file nel backup, in rete c’è un sacco di documentazione e lo stesso file di configurazione è molto ben fatto e molto esplicativo quindi non dovreste avere troppi problemi.
Al solito vi invito a segnalarmi errori o imperfezioni ma sopratutto suggerimenti o altro, i vostri commenti sono sempre preziosi, spero che questo articolo possa tornare utile a qualcuno ciaooo!!
Vota l’articolo



Loading...






















December 30th, 2009 at 10:54 am
Grazie per il suggerimento il software non sembra niente male.. grazie ancora per il link ciao
December 24th, 2009 at 4:15 pm
Hai mai provato backuppc? ha anche la sua interfaccina grafica !
http://backuppc.sourceforge.net/