Backup su macchina remota via ssh con rsync

Attualmente sul mercato e' disponibile una vasta gamma di soluzioni per il backup. Possiamo tranquillamente trovare apparati da un costo elevato che utilizzano nastri come supporto di memorizzazione dei dati,  fino ad arrivare a 'semplici' applicazioni totalmente gratuite che effettuano copie su disco. Cio' non implica che quest'ultimi sistemi non possano essere impiegati con successo sia da privati che in ambito aziendale. Qui di seguito verra' illustrata la realizzazione di un sistema di backup utilizzando rsync ed il servizio OpenSSH. Dobbiamo innanzitutto generare una chiave che consentira' ad rsync di copiare i dati sul nostro server di backup via ssh senza dover richiedere una password, in questo modo potremo schedulare l'operazione utilizzando il cron di sistema.

Sulla macchina che eseguira' il backup (quella dove i file verranno prelevati per intenderci) eseguiamo

ssh-keygen -t rsa

Lasciamo vuota la passphrase.

Nella directory ".ssh" dell'utente verranno generate due chiavi, una privata ed una pubblica:

ls -al /root/.ssh/
total 24
drwx------  2 root root 4096 2009-09-24 00:01 .
drwx------ 39 root root 4096 2009-09-24 00:00 ..
-rw-------  1 root root 1675 2009-09-24 00:01 id_rsa
-rw-r--r--  1 root root  403 2009-09-24 00:01 id_rsa.pub

Copiamo la chiave pubblica (id_rsa.pub) sul server che dovra' contenere i nostri backup

scp /root/.ssh/id_rsa.pub  root@indirizzo_server_di_backup:/root/.ssh/authorized_keys

Adesso scheduliamo il nostro backup alle ore 2:30 am  di tutti i giorni. Digitiamo (sulla macchina che eseguira' il backup)

crontab -e

e dopo esserci posizionati su una riga vuota scriviamo questo

30 2 * * * rsync -e ssh -a --delete  /file/da/copiare root@indirizzo_server_di_backup:/cartella_che_conterra_la_copia

N.B. Se volete escludere una cartella dalla copia bastera' usare l'opzione "--exclude nomde_cartella"

L'opzione --delete serve a far si che se un file viene rimosso dalla cartella di origine, rsync lo elimini anche in quella di destinazione

Uscite salvando le nuove modifiche con

Crtl + X

Potrete visualizzare tutte le operazioni schedulate nel cron con questo comando

crontab -l