Introduzione
Il comando Remote sync, o rsync, viene utilizzato per trasferire e sincronizzare file e directory tra macchine, host, shell remote o una combinazione di quanto sopra. È una potente utility che dovresti conoscere se lavori con Linux. Tratteremo le basi del comando rsync qui. Sebbene questo articolo utilizzi Ubuntu 20.04, puoi usare gli stessi comandi su altre distribuzioni Linux.
Cosa rende rsync così speciale?
I comandi rsync utilizzano la compressione e la decompressione durante la ricezione e l'invio di file, ciò significa che consumerà molto meno larghezza di banda. Rsync aggiorna solo le differenze tra l'origine e la destinazione poiché utilizza il protocollo di aggiornamento remoto. Supporta anche proprietari, gruppi, collegamenti, autorizzazioni e dispositivi.
Come si installa rsync?
La maggior parte delle distribuzioni Linux viene fornita con rsync installato. In caso contrario, usa il seguente comando sul tuo sistema Ubuntu:
sudo apt-get install rsync
Sintassi Rsync
Questa sezione esaminerà brevemente la sintassi di rsync.
Trasferimento o sincronizzazione da locale a locale
rsync {opzione} {sorgente} {destinazione}
Trasferimento o sincronizzazione da locale a remoto
rsync {option} {source} {[email protected]:destination}
Trasferimento o sincronizzazione da remoto a locale
rsync {option} {[email protected]:destination} {destination}
Source è la directory di origine
Destinazione è la directory di destinazione
L'opzione sono le opzioni del comando rsync
Utente è il nome utente remoto
Host è l'IP o il nome host remoto
Come usare rsync
Copia file in locale
Per copiare i file in locale, usa:
rsync –a {filename} {destination}
Nell'esempio sopra, stiamo copiando "source.zip ” dalla nostra directory corrente a Documenti.
Puoi verificare se il file è stato copiato elencando tutti i file e le directory in Documenti, utilizzando:
ls
Come puoi vedere, "source.zip ” è presente nella directory Documenti.
Se non aggiungi un nome per il file nella destinazione, copierà lo stesso nome del file di origine. Per modificare il nome del file di destinazione, utilizzare:
rsync –a {filename} {destination/filename}
Nell'esempio seguente, copieremo "source.zip ” di nuovo, ma questa volta rinominalo in “destination.zip ”.
"destinazione.zip ” è stato copiato nella directory Documenti, come mostrato nell'immagine sottostante.
Copia il contenuto di una directory nella destinazione
Puoi utilizzare il comando seguente per copiare il contenuto della directory di origine nella destinazione.
rsync –av {source}/ {destination}
L'immagine sopra mostra il contenuto "Fonte ” copiata nella directory “Destinazione ” directory.
Copia l'intera directory nella destinazione
Se vuoi solo copiare il contenuto della tua directory nella destinazione, usa:
rsync –av {source} {destination}
L'esempio precedente copia la "Sorgente ” e il suo contenuto nella “Destinazione ” directory.
Mostra progressi
Per visualizzare lo stato di avanzamento, utilizzare:
rsync –rv –progress {source} {destination}
Ignora i file
Se vuoi ignorare determinati file, usa:
rsync -vr --exclude '{condition}' {source} {destination}
La "Fonte ” contiene i seguenti file:
Nell'esempio seguente, ignoreremo i file che iniziano con una "s ”.
Come mostra l'immagine, solo "file ” viene copiato.
Elenca file e directory
rsync può essere utilizzato per elencare i contenuti di una sorgente.
rsync {filename}
Il comando precedente elenca il contenuto della directory Documenti.
Copia file da un computer locale a un computer remoto
Per spostare i file su una macchina remota, dovrai installare openssh-server. Il comando per questo è:
sudo apt update
sudo apt install openssh-server
Una volta installato, puoi utilizzare il comando seguente per spostare il file o la directory.
rsync –a {source} {remote [email protected] IP:/destination}
Ti verrà richiesta la password della macchina remota.
Nell'esempio seguente, sposteremo "doc ” nella directory home remota.
Usando ls, possiamo vedere che "doc ” è stato spostato qui.
Copia file da un telecomando a una macchina locale
Utilizzerai lo stesso comando come quello utilizzato nell'esempio sopra.
rsync –a {remote source} {local [email protected] IP:/destination}
In questo esempio, sposteremo "remotesrcdoc ” dalla macchina remota alla macchina locale.
Usando ls, possiamo vedere che “remotesrcdoc ” è stato spostato qui.
Aggiungi la data corrente al file di destinazione
Puoi aggiungere la data al file di destinazione o al nome della directory utilizzando:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +\\%Y-\\%m)
Nell'esempio seguente, sposteremo "source.zip ” sul desktop, denominalo destinazione e aggiungi la data.
Visualizzazione delle differenze tra i file di origine e di destinazione
Il comando seguente può essere utilizzato per visualizzare le differenze tra i file di origine e di destinazione.
rsync –avzi {source}/ {destination}/
L'immagine seguente mostra che i file "Ciambelle " e "Hello.txt ” non sono presenti nella directory di destinazione.
Il parametro "f ” significa file. Altri parametri includono:
t:modifica del timestamp
d:cambio di destinazione
s:modifica della dimensione del file
Limita la larghezza di banda durante il trasferimento di file
Per limitare la larghezza di banda durante il trasferimento di file, utilizzare:
rsync -vr --bwlimit=1000 {source}/* {destination}
Nell'esempio seguente, stiamo limitando la larghezza di banda a 1000 kB.
Ulteriori informazioni su rsync
Per vedere più opzioni disponibili su rsync, usa:
rsync –help
Abbiamo trattato alcune delle nozioni di base del comando rsync, abbiamo visto come trasferire e sincronizzare i file in locale e in remoto.
Se vuoi sincronizzare i tuoi file usando il comando scp, visita qui.