Usare rsync con Ubuntu per effettuare i backup

di Calogero Bonasia (LinuxTEAM)

Rsync è un programma per sistemi Unix che sincronizza i file e le directory da un posto ad un altro minimizzando il trasferimento dei dati, lavorando solo sulle differenze (tra i file). Un'altra caratteristica importante di questo programma, che di solito non troviamo in altri similari (dedicati cioè alla copia), è che il mirroring si svolge con una sola trasmissione in ogni direzione; eventualmente utilizzando la compressione e la ricorsione.

In “daemon mode” (modalità come servizio) rsync è in ascolto sulla porta predefinita 873 /TCP, permette di sincronizzare anche due directory locali (cioè sullo stesso computer) oppure di interagire con RSH e SSH. In quest'ultimo caso il client di rsync deve essere installato sia sull'host locale che su quello remoto.

Su Ubuntu si può usare rsync come segue:

sudo rsync -av --delete --progress /directory-di-partenza /directory-di-destinazione

Opzionalmente è possibile generare un file di log, per esempio:

sudo rsync -av --progress --delete --log-file=/home/nomeutente/Desktop/$(date +%Y%m%d)_rsync.log --exclude "/home/nomeutente/.gvfs" /home /media/HomeBackup

In questo caso viene esclusa la directory relativa a GVFS. Il parametro -a preserva i permessi dei file, mentre v attiva la modalità “verbose” (dettagliata) restituendo a terminale una serie di informazioni su come progredisce l'attività del programma. –progress aggiunge ulteriori informazioni sulla progressione dell'attività del programma.

Il parametro –delete, invece, controlla i cambiamenti tra sorgente e destinazione e cancella dalla destinazione i file che sono stati cancellati nella sorgente. –exclude è comodo perché consente di evitare la copia di particolari directory o di singoli file.

Per automatizzare le copie da una sorgente verso una destinazione torna comodo l'uso di uno script da lanciare mediante crontab. Questo un esempio:

#!/bin/bash
sudo rsync -av --delete --progress /directory-di-partenza /directory-di-destinazione

Lo script, chiamato ad esempio copie.sh, deve avere i permessi di esecuzione opportuni, quindi:

chmod +x copie.sh

Il cronjob potrebbe essere impartito come segue:

sudo crontab -e
0 22 * * * /root/copie.sh