Introduzione

Rsync è un'utilità da riga di comando rapida e versatile che sincronizza file e cartelle tra due posizioni su una shell remota o da/a un demone Rsync remoto. Fornisce un rapido trasferimento incrementale dei file trasferendo solo le differenze tra l'origine e la destinazione.

Rsync può essere utilizzato per il mirroring dei dati, i backup incrementali, la copia di file tra i sistemi e come un sostituto per i comandi scp, sftpe cp per l'uso quotidiano.

In questo tutorial, ti mostreremo come utilizzare rsync attraverso esempi pratici e spiegazioni dettagliate delle opzioni rsync più comuni.

Installare Rsync

L'utilità rsync è preinstallata sulla maggior parte delle distribuzioni Linux e macOS. Puoi verificare se è installato sul tuo sistema digitando:

rsync --version
rsync  version 3.1.2  protocol version 31

Se non hai rsync installato sul tuo sistema, puoi installarlo facilmente usando il gestore pacchetti della tua distribuzione.

Installare Rsync su Ubuntu e Debian

sudo apt install rsync

Installa Rsync su CentOS e Fedora

sudo yum install rsync

Sintassi del comando Rsync

Prima di andare su come utilizzare il comando rsync, iniziamo esaminando la sintassi di base.

Le espressioni rsync di utilità assumono la forma seguente:

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [[email protected]]HOST:DEST
Remote to Local: rsync [OPTION]... [[email protected]]HOST:SRC... [DEST]

OPTION - Le opzioni di rsync.

  • SRC - Directory di origine.
  • DEST - Directory di destinazione.
  • USER - Nome utente remoto.
  • HOST - Hostname remoto o indirizzo IP.

rsync fornisce una serie di opzioni che controllano ogni aspetto del suo comportamento. Le opzioni più utilizzate sono:

  • -a, --archive, Modalità archivio, equivalente a -rlptgoD. Questa opzione dice al comando rsync di sincronizzare ricorsivamente le directory, trasferire dispositivi speciali e bloccare, conservare collegamenti simbolici, tempi di modifica, gruppo, proprietà e permessi.
  • -z, --compress. Questa opzione forzerà rsync a comprimere i dati quando vengono inviati al computer di destinazione.
  • -P, equivalente a --partial --progress. Quando viene utilizzata questa opzione, rsync mostrerà una barra di avanzamento durante il trasferimento e per mantenere i file parzialmente trasferiti. È utile quando si trasferiscono file di grandi dimensioni su connessioni di rete lente o instabili.
  • --delete. Quando si utilizza questa opzione rsync eliminerà file estranei dalla posizione di destinazione. È utile per il mirroring.
  • -q, --quiet. Utilizzare questa opzione se si desidera eliminare i messaggi non di errore.
  • -e. Questa opzione ti consente di scegliere una shell remota diversa. Per impostazione predefinita, rsync è configurato per utilizzare ssh.

Utilizzo di base di Rsync

Per copiare un singolo file da uno a un altro percorso locale è necessario eseguire il comando seguente:

rsync -a /opt/filename.zip /tmp/

L'utente che esegue il comando deve disporre delle autorizzazioni di lettura sulla posizione di destinazione e delle autorizzazioni di scrittura sulla destinazione.

Se si omette il nome file dalla posizione di destinazione, il file viene copiato con il nome corrente. Se si desidera salvare il file con un nome diverso, specificare il nuovo nome nella parte di destinazione:

rsync -a /opt/filename.zip /tmp/newfilename.zip

Nell'esempio seguente stiamo creando un backup locale dei file del nostro sito Web:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Se la directory di destinazione non esiste verrà creata.

Vale la pena ricordare che rsync offre un trattamento diverso alle directory di origine con una barra finale /. Se aggiungi una barra finale nella directory di origine, copierà solo il contenuto della directory nella directory di destinazione. Quando si omette la barra finale rsync, la directory di origine verrà copiata all'interno della directory di destinazione.

Utilizzare Rsync per sincronizzare i dati da e verso una macchina remota

Quando si utilizza rsync per il trasferimento remoto, deve essere installato sia sul computer di origine che su quello di destinazione. Le nuove versioni di rsync sono configurate per utilizzare SSH come shell remota predefinita.

Nel seguente esempio, stiamo trasferendo una directory da un computer locale a un computer remoto:

rsync -a /opt/media/ [email protected]_host_or_ip:/opt/media/

Se non hai impostato un accesso SSH senza password al computer remoto, ti verrà chiesto di inserire la password dell'utente.

Se si desidera trasferire i dati da un server remoto a un computer locale, è necessario utilizzare la posizione remota come sorgente:

rsync -a [email protected]_host_or_ip:/opt/media/ /opt/media/

Se SSH sull'host remoto è in ascolto su una porta diversa dalla 22 predefinita, è possibile specificare la porta utilizzando l'opzione -e:

rsync -a -e "ssh -p 2322" /opt/media/ [email protected]_host_or_ip:/opt/media/

Quando si trasferiscono grandi quantità di dati, si consiglia di eseguire il comando rsync all'interno di una schermata (screen) o utilizzare l'opzione -P:

rsync -a -P [email protected]_host_or_ip:/opt/media/ /opt/media/

Escludere file e directory

Quando si escludono file o directory, è necessario utilizzare i percorsi relativi alla posizione di origine.

Esistono due opzioni per escludere file e directory. La prima opzione è utilizzare l'argomento --exclude e specificare i file e le directory che si desidera escludere dalla riga di comando.

Nel seguente esempio, escludiamo le directory node_modules e tmp che si trovano all'interno di src_directory:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

La seconda opzione è usare l'argomento --exclude-from e specificare i file e le directory che si desidera escludere in un file.

nano exclude-file.txt
node_modules
tmp

Quindi:

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

Conclusione

In questo tutorial, hai imparato come usare Rsync per copiare e sincronizzare file e directory. C'è molto altro da sapere su Rsync nella pagina del Manuale dell'utente di Rsync.