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