27.6. Introduzione a rsync

rsync è utile nei casi in cui sia necessario trasferire grandi volumi di dati che non sono stati sostanzialmente modificati, ad esempio i backup. Questo programma è utile anche per i server di staging, che vengono utilizzati per archiviare strutture di directory complete di server Web di cui viene regolarmente effettuato il mirroring su un server Web in DMZ.

27.6.1. Configurazione e uso

rsync può essere utilizzato in due diversi modi. Può essere usato per archiviare o copiare i dati. Per eseguire questa operazione, è sufficiente installare una shell remota, come ssh, sul sistema di destinazione. rsync può però anche essere usato come daemon per fornire le directory in rete.

Se utilizzato nella modalità di base, rsync non richiede operazioni di configurazione specifiche. rsync consente di effettuare il mirroring di intere directory su un altro sistema. Il comando descritto nel seguente esempio consente di creare una copia di backup della directory home di tux sul server di backup denominato sun:

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

Il seguente comando viene invece usato per recuperare la directory:

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

Da quanto descritto, la gestione di questo programma non è apparentemente molto diversa da un normale strumento di copia come scp.

Per poter usufruire di tutte le funzioni di rsync, è necessario usarlo in modalità "rsync". Per eseguire questa operazione, è necessario avviare il daemon rsyncd su uno dei sistemi configurandolo nel file /etc/rsyncd.conf. Ad esempio per usare la directory /srv/ftp con rsync, usare la seguente configurazione:

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
 

Quindi, avviare rsyncd con il comando rcrsyncd start. rsyncd può essere avviato anche automaticamente durante l'avvio. In questo caso è necessario attivare il servizio nell'editor runlevel fornito da YaST oppure immettere manualmente il comando insserv rsyncd. rsyncd può anche essere avviato tramite xinetd. Questa configurazione deve però preferibilmente essere usata per i server che utilizzando raramente rsyncd.

Il comando mostrato nell'esempio crea anche un file di registro che elenca tutte le connessioni, che viene salvato in /var/log/rsyncd.log.

A questo punto è possibile verificare il trasferimento da un sistema client con il seguente comando:

rsync -avz sun::FTP
 

Questo comando elenca tutti i file presenti nella directory /srv/ftp del server. La richiesta viene anche registrata nel file /var/log/rsyncd.log. Per avviare il trasferimento effettivo, specificare una directory di destinazione. Usare . per la directory corrente. Ad esempio:

rsync -avz sun::FTP .
 

Per default la sincronizzazione con rsync non cancella alcun file. Per forzare questa operazione, è necessario specificare l'opzione aggiuntiva --delete. Per evitare che vengano eliminati file nuovi, è necessario usare l'opzione --update. Tutti i conflitti devono essere risolti manualmente.

27.6.2. Ulteriori informazioni

Informazioni utili su rsync sono riportate nella documentazione man rsync e man rsyncd.conf. Per un riferimento tecnico sull'uso di rsync, vedere /usr/share/doc/packages/rsync/tech_report.ps. Per informazioni aggiornate su rsync, vedere il sito Web del progetto all'indirizzo http://rsync.samba.org/