Come padroneggiare il comando rsync in Linux

Come suggerisce il nome, rsync è uno strumento di sincronizzazione. La prima volta che lo usi, copia semplicemente file e directory da un luogo all’altro. Tuttavia, usi successivi sincronizzano solo le differenze tra questi luoghi. Quindi, se aggiungi un file alla directory sorgente, rsync copierà solo il nuovo file nella destinazione. Questo fa risparmiare molto tempo e larghezza di banda, specialmente quando si copia in una posizione remota.

Immagina di avere 50GB di dati che devi sincronizzare con un server remoto. Puoi pianificare rsync per essere eseguito ogni giorno. Invece di dover copiare ripetutamente i 50GB, l’utilità invierà solo le differenze. Questo potrebbe significare che deve caricare solo pochi megabyte di dati ogni giorno, invece di gigabyte.

Nell’immagine in evidenza sopra, puoi vedere come la prima volta sono stati trasferiti 104MB, mentre durante il secondo uso sono stati richiesti solo 31KB.

Leggi anche: Utilizzare Rclone per sincronizzare con più fornitori di archiviazione cloud in Linux

Come installare rsync su varie distribuzioni Linux

Su Debian e distribuzioni basate su Debian, come Ubuntu, puoi installare rsync con:

sudo apt install rsync

rsync-install

Su Fedora, installa con:

dnf install rsync

E su distribuzioni derivate da RedHat (ad esempio, CentOS):

yum install rsync

Per installare rsync su Arch Linux, usa il comando:

pacman -S rsync

Su openSUSE, usa:

zypper install rsync

Se non è incluso nei tuoi repository predefiniti, consulta la pagina di installazione di rsync di openSUSE.

Come usare rsync per sincronizzare file o directory locali

La sintassi generale di rsync è: rsync [opzioni] /percorso/alla/sorgente /percorso/alla/destinazione.

[opzioni] sta per opzioni della riga di comando che puoi trovare nel manuale:

man rsync

rsync-command-line-options

Premi q per uscire dal manuale.

Per copiare un file:

rsync /bin/ls .

Il comando sopra è equivalente a rsync /bin/ls /home/tuo_nome_utente. Questo copia il comando “ls” nella directory in cui ti trovi attualmente. Per impostazione predefinita, questa dovrebbe essere /home/tuo_nome_utente. Il punto . sta per directory corrente. I percorsi possono essere assoluti ( /home/tuo_nome_utente/Downloads/chrome.zip) o relativi alla tua directory corrente ( Downloads/chrome.zip).

Quando tratti file di grandi dimensioni, puoi usare questo comando:

rsync -P /percorso/al/file /percorso/alla/destinazione

Questo mostrerà il progresso e ti permetterà di riprendere un trasferimento interrotto. Nel caso tu debba riprendere, usa:

rsync -P --append /percorso/al/file /percorso/alla/destinazione

Senza --append, il trasferimento partirebbe da zero.

Per sincronizzare directory:

rsync -av /percorso/alla/sorgente /percorso/alla/destinazione

Esempio di comando:

rsync -av /bin .

Effetto della barra finale in rsync (Importante)

Nel comando precedente nota che il percorso alla directory sorgente non contiene una barra finale / ( /bin vs /bin/). Senza una barra finale, rsync copia la directory stessa. Quindi rsync -av /bin . risulta in quello che è rappresentato nell’immagine seguente.

rsync-without-trailing-slash

Quando viene utilizzata una barra finale, rsync copia i contenuti di quella directory. In questo caso ogni file in /bin sarebbe disperso nella directory di destinazione. Quindi rsync -av /bin/ . risulterebbe in quello che è rappresentato nell’immagine seguente.

rsync-with-trailing-slash

È molto importante ricordare questa differenza, poiché utilizzare TAB per completare i nomi delle directory aggiunge automaticamente una barra finale alla fine. Quindi tienilo a mente per evitare di creare un disastro nella directory di destinazione.

Come usare rsync per sincronizzare con posizioni remote (ad es. server)

Ciò che è stato descritto nella sezione precedente è valido anche quando si lavora con posizioni remote. L’unica differenza è che devi anteporre il nome utente di accesso e l’indirizzo della posizione remota. Per inviare la tua directory /bin a un computer remoto, usa:

rsync -av /bin [email protected]:/home/tuo_nome_utente

rsync si connette tramite OpenSSH. Questo significa che devi configurare il server OpenSSH e le credenziali di accesso sulla destinazione remota in anticipo. Nota che tuo_nome_utente si riferisce al nome utente creato sul server. Questo potrebbe essere diverso dal nome utente che hai sul tuo computer locale.

Se possiedi un nome di dominio e lo punti al tuo indirizzo IP del server, puoi usare il dominio nel comando:

rsync -av /bin [email protected]:/home/tuo_nome_utente

Per trasferimenti di grandi dimensioni, è utile anche comprimere i dati prima di inviarli attraverso la rete aggiungendo il parametro -z:

rsync -avz /bin [email protected]:/home/tuo_nome_utente

Puoi omettere il parametro di compressione quando invii file già compressi (file audio come MP3, video, immagini JPEG). Non possono essere compressi ulteriormente, quindi perderesti tempo usando -z su questi.

Per copiare file dalla destinazione remota al tuo computer locale, basta invertire le posizioni:

rsync -avz [email protected]:/bin /home/tuo_nome_utente

Conclusione

Questo copre i comandi più importanti di rsync che devi conoscere. Se hai mai bisogno di maggior controllo su come sincronizzare le directory, consulta il manuale online di rsync e scorri qualche pagina verso il basso finché non trovi “Riepilogo Opzioni.”