Come utilizzare il comando rsync di Linux per semplificare la sincronizzazione dei file remoti

Copiare file da un dispositivo all’altro può essere un compito laborioso. Fortunatamente, puoi semplificare questo processo su Linux utilizzando il comando rsync .

rsync, acronimo di sincronizzazione remota, ti permette di trasferire e sincronizzare file o cartelle tra dispositivi locali e server remoti basati su Linux. Che tu sia un professionista o stia solo iniziando, padroneggiare il comando rsync  può semplificare la gestione dei tuoi file Linux.

Questo articolo approfondirà in dettaglio il comando rsync e come funziona. Dimostreremo anche come utilizzare il comando rsync attraverso esempi pratici.


rsync è un potente e versatile comando Linux per trasferire e sincronizzare file tra dispositivi locali e remoti. A differenza dei comandi di duplicazione tradizionali, rsync utilizza un algoritmo di trasferimento delta per trasmettere solo le differenze tra i file sorgente e destinazione. Questo approccio riduce drasticamente l’uso della larghezza di banda e accelera i trasferimenti.

rsync ha anche robuste funzionalità per il trasferimento di file su un server di backup e per le operazioni di mirroring. Preserva gli attributi dei file e supporta trasferimenti sicuri tramite SSH, rendendolo adatto sia per trasferimenti di file locali che remoti.

Come funziona rsync?

Questa sezione esplorerà varie opzioni di rsync e la sintassi di base per diversi scopi.

Opzioni e parametri di rsync

rsync ha numerose opzioni di linea di comando, parametri e file di configurazione per personalizzare il suo comportamento. Eccone alcuni comunemente usati:

  • -v o –verbose : aumenta la verbosità, fornendo un output più dettagliato durante il trasferimento.
  • -a o –archive : modalità archivio, che include la duplicazione ricorsiva e la conservazione dei permessi dei file, dei timestamp, link simbolici, e dei file di dispositivo.
  • -r o –recursive : copia le directory in modo ricorsivo.
  • –delete : elimina i file esclusi dalla cartella di destinazione.
  • –exclude=PATTERN : esclude file o directory che corrispondono al pattern specificato.
  • –include=PATTERN : include file o directory che corrispondono al pattern specificato.
  • -z o –compress : comprime i dati del file durante il trasferimento per ridurre l’uso della larghezza di banda.
  • -s o –sparse : genera un riassunto dei file e delle directory sincronizzate, inclusi i file sparsi, dopo un’operazione di sincronizzazione.
  • –dry-run : esegue una prova senza apportare alcuna modifica effettiva.
  • –temp-dir : specifica una directory per memorizzare i file temporanei.
  • -u o –update : salta i file sul lato di destinazione che sono più recenti dei file sorgente, quindi vengono aggiornati solo i file più vecchi.
  • -h o –human-readable : visualizza i numeri in un formato leggibile dall’uomo.
  • -i o –itemize-changes : emette un elenco delle modifiche apportate durante il trasferimento.
  • –progress : mostra il progresso durante il trasferimento.
  • –stats : fornisce le statistiche del trasferimento file dopo che è completo.
  • -e o –rsh=COMMAND : specifica quale shell remota utilizzare.
  • –bwlimit=RATE : limita la larghezza di banda per aumentare l’efficienza della rete.
  • -P o –partial –progress : conserva i file parzialmente trasferiti e mostra il progresso.

Per un elenco completo di tutte le opzioni rsync  disponibili, esegui il seguente comando:

man rsync

Vedrai informazioni dettagliate su ogni opzione e parametro.

Sintassi di base

La sintassi di base di un comando rsync  è la seguente:

rsync [OPTIONS] SOURCE DESTINATION
  • [OPTIONS] : questa è la sezione dove puoi includere le opzioni di rsync. Puoi aggiungere più di un’opzione.
  • SOURCE : questa è la directory o il file di origine che vuoi copiare o sincronizzare. Specifica qui il percorso ai dati di origine.
  • DESTINATION : la cartella di destinazione dove i dati di origine verranno copiati o sincronizzati. Specifica qui il percorso per la cartella o il file di destinazione.

Sintassi di base per la shell remota

Quando si utilizza rsync per trasferire dati da un computer locale a un server privato virtuale (VPS) Linux, la comunicazione si basa sul daemon rsync . La sintassi per la shell remota di rsync è la seguente:

rsync [OPTIONS] -e "SSH_COMMAND" SOURCE DESTINATION

L’opzione -e viene utilizzata per specificare la shell remota. Nella maggior parte dei casi, utilizzerai ssh per connetterti all’host remoto utilizzando il protocollo di aggiornamento remoto rsync.

Esploriamo due scenari comuni.

Usa il seguente comando per scaricare dati da un sistema remoto al tuo computer locale:

rsync -avz -e ssh user@remote_host:/path/to/source/ /path/to/local/destination/

Usa il seguente comando per inviare dati dal tuo sistema di file locale a una directory remota utilizzando il protocollo CVS:

rsync -avz /path/to/local/source/ user@remote_host:/path/to/remote/destination/

Come verificare la versione di rsync

rsync è tipicamente incluso di default in molte distribuzioni Linux. Verifichiamo se rsync è già installato sul tuo sistema.

Per gli utenti di Windows che lavorano con VPS hosting, usa PuTTY SSH per accedere. Se stai utilizzando macOS o Linux, accedi al Terminal.

Una volta effettuato l’accesso, esegui il comando qui sotto:

rsync --version

Riceverai un risultato simile al seguente:

rsync version 3.2.7 protocol version 31

Come installare rsync

Se rsync non è preinstallato sulla tua macchina locale o remota, procedi e installalo manualmente. Ecco i comandi di installazione per i vari sistemi operativi:

Per le distribuzioni basate su Debian, incluso Ubuntu:

sudo apt-get install rsync

Per le distribuzioni basate su Fedora, come CentOS:

sudo dnf install rsync

Per macOS:

brew install rsync

Come utilizzare i comandi rsync

Prima di imparare ad usare rsync, prepariamo due cartelle di prova chiamate originale e duplicato. La cartella originale conterrà tre file di esempio, mentre la cartella duplicata è inizialmente vuota.

Per creare queste cartelle, segui questi comandi:

cd

mkdir original

mkdir duplicate

Successivamente, crea tre file di esempio all’interno della cartella originale :

touch original/file{1..3}

Per assicurarti che tutti i file di esempio siano stati creati, elenca tutti i file nella directory originale e osserva il sistema dei file utilizzando questo comando:

rsync original/

Comandi rsync più comuni

Uno degli utilizzi più essenziali di rsync è replicare i dati tra due directory all’interno dello stesso sistema. Per fare questo, usa il seguente comando:

rsync original/* duplicate/

I contenuti all’interno della cartella originale saranno duplicati nella cartella duplicata. Se aggiungi un nuovo file o aggiorni i file esistenti nella cartella originale , solo i nuovi file o quelli modificati verranno trasferiti. Tuttavia, se la cartella duplicata non esiste, ne risulterà un errore.

Per sincronizzare i file e creare una nuova cartella contemporaneamente, usa invece questo comando:

rsync original/ duplicate/

Come utilizzare i comandi rsync con le sottodirectory

Per sincronizzare cartelle e sottodirectory tra due luoghi, usa questo comando di copia della directory rsync:

rsync -r original/*/ duplicate/

Per sincronizzare una specifica sottodirectory, digita il comando qui sotto:

rsync -r original/subdirectory_name/ duplicate/

Sostituisci subdirectory_name con il nome della sottocartella che vuoi sincronizzare.

Potresti voler escludere una particolare sottodirectory dalla sincronizzazione. In questo caso, inserisci il seguente comando per farlo:

rsync -r --exclude=subdirectory_name original/ duplicate/

Come sincronizzare i file

Per sincronizzare o aggiornare i file tra due cartelle, usa questo comando:

rsync -av original/ duplicate/

Per copiare i file dalla cartella originale a un server remoto, inserisci questo comando:

rsync -av -e ssh original/ username@remote_host:/path/to/destination/

Sostituisci username, remote_host, e /path/to/destination/ con i valori appropriati.

Come combinare i comandi rsync

Mentre diventi più familiare con rsync, esploriamo la sua capacità di combinare più comandi per compiti complessi di gestione dei file.

Puoi combinare le funzionalità di sincronizzazione ed esclusione per ottenere risultati precisi.

L’esempio qui sotto mostra come puoi sincronizzare tutti i file dalla directory originale rsync escludendo i file TXT:

rsync -av --exclude='*.txt' original/ duplicate/

Combina l’opzione -r  con i comandi di sincronizzazione per garantire che le directory rsync e i loro contenuti vengano sincronizzati in modo ricorsivo.

rsync -av -r original/ duplicate/

Prima di sincronizzare una vera cartella rsync, puoi utilizzare l’opzione –dry-run per visualizzare in anteprima le modifiche che rsync farebbe senza apportare alcuna modifica effettiva.

rsync -av --dry-run original/ duplicate/

Altre opzioni per i comandi rsync

L’opzione –delete ti permette di eliminare i file dalla cartella di destinazione che non esistono più nella cartella di origine. Per utilizzare questa opzione, includila nel tuo comando rsync in questo modo:

rsync -av --delete original/ duplicate/

rsync supporta la sincronizzazione di file specifici o tipi di file utilizzando pattern e caratteri jolly. Ad esempio, per sincronizzare solo i file TXT, inserisci:

rsync -av original/*.txt duplicate/

Puoi anche escludere file in base a specifici pattern nei loro nomi. Per escludere un file chiamato example.txt, digita il seguente comando:

rsync -av --exclude=example.txt original/ duplicate/

Combina le opzioni –include e –exclude per includere più file o directory escludendone altri. Ecco un esempio per includere i file che iniziano con la lettera L ed escludere tutti gli altri file:

rsync -av --include='L*' --exclude='*' original/ duplicate/

Per limitare la sincronizzazione ai file al di sotto di una determinata dimensione, utilizza l’opzione –max-size seguita dal limite di dimensione. Il comando rsync per sincronizzare solo i file più piccoli di 10 MB è il seguente:

rsync -av --max-size=10M original/ duplicate/

Come aggiungere una barra di avanzamento

Monitorare il progresso della sincronizzazione può essere utile, specialmente per trasferimenti di file di grandi dimensioni. rsync ti permette di includere una barra di avanzamento utilizzando l’opzione –progress. Ecco il comando che puoi utilizzare:

rsync -av --progress original/ duplicate/

L’output avrà un aspetto simile a questo:

file1.txt
    5.120.000 100%   50,00MB/s 0:00:00 (xfr#1, to-chk=2/3)
file2.txt
    5.345.678 100%   55,67MB/s 0:00:00 (xfr#2, to-chk=1/3)

Per aggiungere una barra di avanzamento e mantenere i file parzialmente trasferiti invece di eliminarli in caso di interruzione, usa l’opzione -P:

rsync -av -P original/ duplicate/

Come creare un backup con rsync

Infine, rsync offre un modo conveniente per creare file di backup utilizzando l’opzione –backup. Questa opzione ti permette di fare il backup dei file su un server, prevenendo la sovrascrittura durante la sincronizzazione.

Per creare un backup remoto e specificare la sua directory, usa il seguente comando:

rsync -av --backup --backup-dir=/path/to/backup/ original/ duplicate/

Quando eseguita, l’opzione di backup rsync genera un elenco di file incrementale e aggiunge una tilde (~) al nome del file originale, come ad esempio important.txt.

Conclusioni

rsync è un potente strumento di sincronizzazione remota, trasferimento dati e specchiatura dei file. In questa guida, abbiamo coperto tutto quello di cui hai bisogno per iniziare con lo strumento, dall’installazione a pratici esempi di rsync  che puoi applicare tramite la riga di comando. Padroneggiare rsync migliorerà la gestione dei tuoi file Linux, rendendola più efficiente e affidabile.

FAQ su rsync

Questa sezione risponderà alle domande più comuni su rsync.

Quali sistemi operativi sono compatibili con rsync?

rsync è principalmente progettato per sistemi operativi di tipo Unix, inclusi Linux e macOS. Tuttavia, può essere utilizzato anche su sistemi Windows con l’aiuto di applicazioni client rsync di terze parti come Cygwin o Windows Subsystem per Linux (WSL). Questo rende rsync una scelta versatile per la sincronizzazione dei file su vari sistemi operativi.

In cosa si differenzia rsync dagli altri metodi di trasferimento file?

Invece di trasferire interi sistemi di file, rsync invia solo le differenze tra i file di destinazione e di origine, riducendo l’uso della larghezza di banda. Può funzionare su connessioni SSH sicure, offre una flessibile compressione dei file e riprende i trasferimenti interrotti. È particolarmente utile quando si gestiscono un gran numero di file in un sistema remoto.

Ci sono delle limitazioni o svantaggi nell’uso di rsync?

Sebbene rsync sia uno strumento potente, ha alcune limitazioni. Prima di tutto, potrebbe non essere adatto per la sincronizzazione in tempo reale poiché funziona in modalità batch. Inoltre, non fornisce crittografia nativa, poiché gli utenti si affidano spesso a SSH per trasferimenti sicuri. Infine, rsync può essere complesso per i principianti, richiedendo una curva di apprendimento per padroneggiare le sue numerose opzioni.

Author
L'autore

Michela Z.

Michela si focalizza sul condividere le sue conoscenze di hosting e marketing digitale e sull'aiutare le aziende ad avere successo online, con un particolare interesse per la creazione di siti web e di e-commerce. Nel suo tempo libero le piace sedersi davanti un buon libro e ascoltare musica.