Comando Rsync in Linux con esempi

rsync è un’utilità a riga di comando veloce e versatile per sincronizzare file e directory tra due posizioni su una shell remota, o da/a un demone Rsync remoto. Fornisce un veloce trasferimento incrementale di file trasferendo solo le differenze tra la sorgente e la destinazione.

Rsync può essere usato per il mirroring dei dati, i backup incrementali, la copia di file tra sistemi e come sostituzione dei comandi scp, sftp e cp.

Questo articolo spiega come usare rsync attraverso esempi pratici e spiegazioni dettagliate delle opzioni più comuni rsync.

Installazione di Rsync #

L’utilità rsync è preinstallata nella maggior parte delle distribuzioni Linux e macOS. Se non hai rsync installato sul tuo sistema, puoi facilmente installarlo usando il gestore dei pacchetti della tua distribuzione.

Installare Rsync su Ubuntu e Debian #

sudo apt install rsync

Installare Rsync su CentOS e Fedora #

sudo yum install rsync

Sintassi del comando Rsync #

Prima di andare a vedere come usare il comando rsync, iniziamo rivedendo la sintassi di base.

Le espressioni dell’utilità rsync hanno la seguente forma:

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – Le opzioni rsync.
  • SRC – Directory sorgente.
  • DEST – Directory destinazione.
  • USER – Nome utente remoto.
  • HOST – Nome host remoto o indirizzo IP.

rsync fornisce una serie di opzioni che controllano il comportamento del comando. Le opzioni più usate sono:

  • -a, --archive, modalità archivio, equivalente a -rlptgoD. Questa opzione dice a rsync di sincronizzare le directory in modo ricorsivo, trasferire dispositivi speciali e a blocchi, conservare i collegamenti simbolici, i tempi di modifica, i gruppi, la proprietà e i permessi.
  • -z, --compress. Questa opzione forza rsync a comprimere i dati mentre vengono inviati alla macchina di destinazione. Usa questa opzione solo se la connessione alla macchina remota è lenta.
  • -P, equivalente a --partial --progress. Quando si usa questa opzione, rsync mostra una barra di progresso durante il trasferimento e mantiene i file parzialmente trasferiti. È utile quando si trasferiscono file di grandi dimensioni su connessioni di rete lente o instabili.
  • --delete. Quando si usa questa opzione, rsync cancella i file estranei dalla posizione di destinazione. È utile per il mirroring.
  • -q, --quiet. Usa questa opzione se vuoi sopprimere i messaggi non di errore.
  • -e. Questa opzione ti permette di scegliere una diversa shell remota. Per impostazione predefinita, rsync è configurato per usare ssh.

Uso base di Rsync #

Il caso d’uso più basilare di rsync è copiare un singolo file da una posizione locale a un’altra. Ecco un esempio:

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

L’utente che esegue il comando deve avere i permessi di lettura sulla posizione sorgente e i permessi di scrittura sulla destinazione.

L’invio del nome del file dalla posizione di destinazione copia il file con il nome corrente. Se vuoi salvare il file con un nome diverso, specifica il nuovo nome nella parte di destinazione:

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

La vera potenza di rsync arriva quando si sincronizzano le directory. L’esempio seguente mostra come creare un backup locale dei file del sito web:

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

Se la directory di destinazione non esiste, rsync la creerà.

Vale la pena menzionare che rsync riserva un trattamento diverso alle directory di origine con una barra finale (/). Se la directory di origine ha una barra finale, il comando copierà solo il contenuto della directory nella directory di destinazione. Quando la barra finale è omessa, rsync copia la directory sorgente all’interno della directory di destinazione.

Usare rsync per sincronizzare i dati da/a una macchina remota #

Quando si usa rsync per trasferire dati in remoto, deve essere installato sia sulla macchina sorgente che su quella di destinazione. Le nuove versioni di rsync sono configurate per usare SSH come shell remota predefinita.

Nel seguente esempio, stiamo trasferendo una directory da una macchina locale a una remota:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Se non hai impostato un login SSH senza password sulla macchina remota, ti verrà chiesto di inserire la password utente.

Per trasferire dati da una macchina remota a una locale, usa la posizione remota come sorgente:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Se SSH sull’host remoto è in ascolto su una porta diversa dalla 22 predefinita, specifica la porta usando l’opzione -e:

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Quando si trasferiscono grandi quantità di dati si raccomanda di eseguire il comando rsync all’interno di una sessione o di usare l’opzione -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Exclude Files and Directories #

Ci sono due opzioni per escludere file e directory. La prima opzione è usare l’argomento --exclude e specificare i file e le directory che vuoi escludere sulla linea di comando.

Quando escludi file o directory, devi usare i loro percorsi relativi alla posizione di origine.

Nel seguente esempio mostra come escludere le directory node_modules e tmp:

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

La seconda opzione è quella di usare l’opzione --exclude-from e specificare i file e le directory che vuoi escludere in un file.

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

Conclusione #

Abbiamo mostrato come usare Rsync per copiare e sincronizzare file e directory. C’è molto altro da imparare su Rsync alla Rsync User’s Manualpage.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.