47.6. Un'introduzione a rsync

rsync si propone ogni qualvolta si debbano trasmettere grandi volumi di dati con cadenze più o meno regolari. Cosa che si ha spesso quando si esegue un back-up, ovvero una copia di sicurezza. Un ulteriore campo di applicazione è rappresentato dai cosiddetti staging server, ovvero server su cui risiede l'intero albero directory di un server Web che viene specchiato con cadenze regolari sull'effettivo server Web in una «DMZ».

47.6.1. Configurazione e utilizzo

rsync può essere utilizzato in due modi diversi. rsync può essere utilizzato per archiviare e copiare dei file, a tal fine è richiesta solo una shell remota, come ad esempio ssh, sull'host meta. rsync può però fungere anche da daemon e mettere a disposizione delle directory nella rete.

Per utilizzare rsync non è richiesta una configurazione particolare. rsync permette di specchiare direttamente delle intere directory su di un altro host. Ad esempio con il seguente comando è possibile avere un back-up della directory home di tux sul server di back-up sun:

 rsync -baz -e ssh /home/tux/ tux@sun:backup

Per il processo inverso si immette:

 rsync -az -e ssh tux@sun:backup /home/tux/

Fin qui il funzionamento non si distingue particolarmente da una comune applicazione per effettuare delle copie, come scp.

Per sfruttarne a fondo le potenzialità, rsync dovrebbe girare nel modo «rsync». A tal fine va avviato su un host il daemon rsyncd. In questo caso rsync si configura tramite il file /etc/rsyncd.conf. Se ad esempio intendete rendere accessibile la directory /srv/ftp tramite rsync potete utilizzare il file di configurazione riportato:

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = Un esempio

In seguito si dovrà lanciare rsyncd con rcrsyncd start rsyncd può essere lanciato anche automaticamente durante il processo di boot, basta abilitare il servizio nell' editor dei runlevel di YaST oppure immettere manualmente il comando insserv  rsyncd. Come alternativa rsyncd può essere lanciato anche da xinetd. Ciò si consiglia solo nel caso di server su cui non si utilizza spesso rsyncd.

Nell'esempio di sopra viene creato anche un file di log che protocolla tutte le connessioni, lo ritroverete sotto /var/log/rsyncd.log.

A questo punto si potrà seguire il transfer da un client, tramite il comando:

rsync -avz sun::FTP

Questo comando elenca tutti i file che si trovano sul server nella directory /srv/ftp. Questa richiesta riemerge anche nel file di log sotto /var/log/syncd.log. Per avviare il transfer va indicata una directory meta. Per indicare la directory attuale potete anche utilizzare un ., quindi:

rsync -avz sun::FTP .

Di default durante il processo di sincronizzazione eseguito tramite rsync non vengono eliminati dei file. Se si vuole forzare tale operazione, basta indicare in aggiunta l'opzione --delete. Per garantire che non vengano sovrascritti dei file aggiornati potete indicare l'opzione --update. Se dovessero verificarsi dei conflitti, questi dovranno essere risolti manualmente.

47.6.2. Ulteriore documentazione

Le indicazioni di maggior rilevanza su rsync sono contenute nelle pagine di manuale che potete visualizzare con man  rsync e man  rsyncd.conf. Per delle indicazioni di natura tecnica su rsync rimandiamo a /usr/share/doc/packages/rsync/tech_report.ps. Per delle informazioni aggiornate su rsync visitate il sito Web del progetto che trovate sotto http://rsync.samba.org.