Backup in Internet mediante rsync e ssh.

Posted On 01 Gen 2008
Comment: Off

linuxtutorialTutorial Linux – Una soluzione per archiviare dati, dai costi decisamente bassi, è quella di realizzare un backup su un secondo disco presente nella stessa macchina o meglio ancora su un disco di una macchina remota.
Questa seconda soluzione è preferibile perché in caso di guasto all’hardware del server principale consente il facile accesso ai dati salvati.

Backup su un secondo disco della stessa macchina.

Supponiamo di avere un server linux che condivide tramite samba l’archivio dei documenti all’interno della nostra rete locale.
Per prima cosa dobbiamo installare il pacchetto rsync. Se non è disponibile nei cd della nostra distribuzione possiamo scaricarlo dal sito ufficiale (http://rsync.samba.org/):
Dopo aver scaricato i sorgenti in formato tar.gz procediamo con l’installazione.
Digitiamo:

tar zxvf rsync-3.0.5.tar.gz

seguito da:

./configure
make
make install

Ora supponiamo che su questa macchina siano presenti due dischi: nel primo ci sarà la cartella /dati all’inteno della quale saranno contenuti gli archivi da salvare, mentre il secondo disco sarà montato come /backup.
Lo script che realizzerà il salvataggio dei dati sarà il seguente:

#!/bin/sh
DATE=`/bin/date`
/bin/echo “Inizio backup – $DATE”
/bin/echo “———————“
/bin/echo “Backup di /dati”
rsync -a –delete –exclude temp /dati /backup
/bin/echo “———————“
DATE=`/bin/date`
/bin/echo “Fine backup – $DATE”

La sintassi del comando è: rsync <opzioni> <directoty sorgente> <directory destinazione>
L’opzione -a significa “archive mode” e corrisponde ad usare -rlptgoD.
‘r’ significa backup ricorsivo, ‘l’ dice al software di mantenere i link come tali, ‘p’ mantiene i permessi sui file, ‘t’ mantiene la data, ‘g’ il gruppo, ‘o’ il proprietario del file e ‘D’ mantiene il device. Durante i test di configurazione si può aggiungere ‘v’ che significa “verbose” e che consente di avere un log dettagliato delle azioni eseguite da rsync.
L’opzione –delete fa in modo che il programma cancelli dal backup i file che vengono rimossi dalla cartella /dati.
Altra opzione che può rivelarsi estremamente utile è –exclude <directory>. Con essa si può escludere la cartella specificata (nell’esempio una cartella temporanea) dal set di backup.
A questo punto sarà sufficiente aggiungere una riga come la seguente

0 3 * * * * /root/bin/backup_sistema_locale

nel nostro crontab per far si che ogni notte all’ora stabilita (nell’esempio le 3) lo script venga eseguito.

Backup su una macchina differente

Vediamo ora come realizzare il backup dei medesimi dati su una macchina differente. E’ importante notare che la macchina di destinazione su cui verranno salvati i dati non deve necessariamente essere in rete locale con il server principale, ma può essere una qualunque linuxbox accessibile via ssh da internet. L’unico requisito è che abbia rsync installato e sufficiente spazio su disco per il backup.
Per prima cosa dobbiamo fare in modo che l’autentica di ssh avvenga senza la richiesta di una password. Colleghiamoci in ssh alla macchina che eseguirà il backup e digitiamo:

ssh-keygen -t rsa

lasciamo vuota la passphrase e successivamente copiamo il file appena generato sul server che contiene i nostro dati mediante il comando:

scp ~/.ssh/id_rsa.pub root@server_dati:

Ora colleghiamoci al server dei dati e copiamo il contenuto del file che abbiamo appena trasferito all’interno del file che contiene le chiavi autorizzate. Per farlo digitiamo:

cat id_rsa.pub >> .ssh/authorized_keys2

A questo punto sarà possibile collegarsi dal server che eseguirà i backup al server principale senza dover più inserire la password.
Ora modifichiamo lo script che esegue il backup come segue:

#!/bin/sh
DATE=`/bin/date`
/bin/echo “Inizio backup – $DATE”
/bin/echo “———————“
/bin/echo “Backup di /dati”
rsync -e ssh -a –delete –exclude temp root@server_dati:/dati /backup
/bin/echo “———————“
DATE=`/bin/date`
/bin/echo “Fine backup – $DATE”
il parametro -e ssh fa in modo che il collegamento avvenga in maniera crittografata, inoltre il percorso dei file di cui eseguire il backup dovrà essere utente@nome_server:/cartella_dati
Per finire inseriamo nel crontab del server di backup la riga:

0 3 * * * * /root/bin/backup_sistema_remoto



About the Author

Related Posts