24.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 compreso in una “DMZ”.

24.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 sul server di back-up :

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

Per il processo inverso si immette:

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

Fin qui l'utilizzo 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 = An Example

In seguito si dovrà lanciare rsyncd:

rcrsyncd start

rsyncd può essere lanciato anche automaticamente durante il processo di boot, basta abilitare il servizio nell' editor dei runlevel di 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 ::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 ::FTP .

Ogni volta che intendete indirizzare l' rsyncd sul server, vanno immessi due doppi punti tra nome del server e drive di destinazione.

24.6.2. Eventuali difficoltà

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.

24.6.3. 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.