Come utilizzare rsync per copiare i file

Come utilizzare rsync per copiare i file

RSYNC è uno strumento di riga di comando in Linux che viene utilizzato per copiare i file da una posizione di origine in una posizione di destinazione. È possibile copiare file, directory e intero file system e mantenere in sintonia i file tra diverse directory. Fa più che copiare i file. Riduce la quantità di dati inviati sulla rete inviando solo i file nuovi o aggiornati. Ecco perché è considerata una grande utilità per la copia e il backup dei file. RSYNC supporta anche la copia dei file in un sistema remoto su SSH.

In questo articolo, spiegheremo come utilizzare RSYNC per copiare i file con alcuni esempi pratici. Spiegheremo anche l'uso di RSYNC nella copia di un singolo file, più file e directory a sistemi sia locali che remoti. Copreremo come usare rsync per:

  • Copia file/directory all'interno del sistema locale
  • Copia file/directory dal sistema locale al sistema remoto
  • Copia file/directory dal sistema remoto a locale

Abbiamo spiegato i comandi e la procedura menzionati in questo articolo su un Ubuntu 20.04 LTS. Avrai bisogno del terminale della riga di comando per la copia dei file utilizzando RSYNC. Per aprire l'applicazione del terminale riga di comando, utilizzare il collegamento della tastiera CTRL+ALT+T.

Installazione di rsync

Rsync viene preinstallato in Ubuntu 20.04 LTS. Tuttavia, se viene rimosso accidentalmente dal sistema, è possibile installarlo come segue:

$ sudo apt install rsync

Ecco alcune delle opzioni comunemente usate che possono essere utilizzate con rsync:

-A: Modalità Archivio
-V: mostra i dettagli del processo di copia
-P: Mostra la barra di avanzamento
-R: copie i dati in modo ricorsivo
-Z: comprime i dati
-D: sopprimere l'output

Copia file e directory a livello locale

La sintassi generale di rsync è:

$ rsync [opzione] [sorgente] [destinazione]

Copia un singolo file a livello locale

Se si desidera copiare un file da una posizione all'altra all'interno del sistema, puoi farlo digitando rsync seguito dal nome del file di origine e dalla directory di destinazione.

Ad esempio, per copiare un singolo file “File1.txt "Dalla posizione corrente che è Home Directory alla directory ~/documenti, il comando sarebbe:

$ rsync/home/tin/file1.txt/home/tin/documenti

Nota: invece di “/home/tin/file1.txt ", possiamo anche digitare" file1 "poiché attualmente stiamo lavorando nella home directory. Inoltre, possiamo usare ~/documenti invece di menzionare l'intero percorso come "/home/stagno/documenti".

Copia più file a livello locale

Se si desidera copiare più file contemporaneamente da una posizione all'altra all'interno del sistema, puoi farlo digitando rsync seguito dal nome dei file di origine e dalla directory di destinazione.

Ad esempio, per copiare i file “File2.txt "e" file3.txt ”Dalla directory home alla directory ~/documenti, il comando sarebbe:

$ rsync/home/tin/file2.txt/home/tin/file3.txt/home/tin/documenti

Per copiare tutti i file con la stessa estensione, è possibile utilizzare il simbolo asterisk (*) invece di specificare individualmente i nomi dei file. Ad esempio, per copiare tutti i file dalla directory home che termina con ".ESTENSIONE ”ZIP” alla directory ~/documenti, useremo:

$ rsync/home/tin/*.zip ~/documenti

Copia directory a livello locale

Se si desidera copiare una directory con la sua sotto-direzione e tutti i contenuti da una posizione all'altra all'interno del tuo sistema, puoi farlo come digitando rsync seguito dalla directory di origine e destinazione.

Ad esempio, per copiare la directory "campione" nella directory "Test/" all'interno della directory home, il comando sarebbe:

$ RSYNC -AV/Home/Tin/Sample/Home/Tin/Test

Nota: specificare "/" dopo che la directory di origine copia solo il contenuto della directory. Se non specifichiamo il "/" dopo la directory di origine, la directory di origine verrà copiata anche nella directory di destinazione.

Come nel seguente output, puoi vedere che la nostra directory di origine "campione" viene anche copiata nella directory di destinazione (poiché abbiamo usato "campione" anziché "campione/" come directory di origine).

RSYNC supporta il trasferimento incrementale come puoi vedere nell'output sopra che trasferisce solo i file che sono nuovi o aggiornati.

Copia file in base alla dimensione massima

Durante la copia, possiamo anche specificare la dimensione massima dei file che possono essere copiati con l'opzione "-max-size". Ad esempio, per copiare i file non più grandi di 2000k da ~/download alla directory ~/documenti, il comando sarebbe:

$ rsync -a - -max -size = 2000k/home/tin/downloads/*/home/tin/documenti

Questo comando copierà tutti i file da ~/download alla directory ~/documenti tranne quelli più grandi di 2000k.

Copia file in base alla dimensione minima

Allo stesso modo, possiamo anche specificare la dimensione minima dei file che possono essere copiati con l'opzione "-min-size". Ad esempio, per copiare i file non inferiori a 5 m da ~/download alla directory ~/documenti, il comando sarebbe:

$ rsync -a --min -size = 5m/home/tin/downloads//home/tin/documenti

Questo comando copierà tutti i file da ~/download nella directory ~/documenti tranne quelli inferiori a 5m.

Escludere i file

Durante la copia dei file da una directory all'altra, è possibile escludere alcuni file utilizzando l'opzione "-exclude" seguita dal nome del file o dall'estensione del tipo di file.

Ad esempio, per escludere tutti i .file zip durante la copia dei file da ~/download alla directory ~/documenti, il comando sarebbe:

$ rsync -a --exclude = "*.Zip "/Home/Tin/Downloads//Home/Tin/Documents

Copia file e directory in remoto

Con RSYNC, è possibile copiare un singolo file, più file e directory su un sistema remoto. Per copiare file e directory in remoto, avrai bisogno di:

  • RSYNC installato sul sistema locale e remoto
  • Accesso SSH al sistema remoto
  • Password utente remota

Prima di copiare file utilizzando RSYNC, assicurarsi di poter accedere al sistema remoto tramite SSH:

$ ssh remote_user@remote_ip


La sintassi generale per la copia di file e directory in un sistema remoto utilizzando RSYNC:

$ rsync [opzione] [sorgente] [remoteuser@remoteip: destinazione]

Ad esempio, per copiare un singolo file "file.txt ”da ~/download alla directory del sistema remoto ~/documenti, il comando sarebbe:

$ rsync -v ~/downloads/file1.txt [email protected]: ~/documenti

Allo stesso modo, per copiare la directory "~/downloads/files" in un sistema locale con la sua sotto-directory e tutti i contenuti nella directory "~/download/campioni" nel sistema remoto:

$ rsync -rv ~/downloads/file [email protected]: ~/download/campioni

Puoi anche copiare i file e le directory dalla macchina remota alla macchina locale. Ad esempio, per copiare un "file2.txt "dal sistema remoto al desktop del sistema locale:

$ rsync -v [email protected]: ~/downloads/file2.txt ~/desktop/

Allo stesso modo, per copiare una directory dal sistema remoto al sistema locale

$ rsync -rv [email protected]: ~/downloads/campione ~/desktop/test

È inoltre possibile utilizzare tutte le opzioni come -max -size, -min -size, -esclude e altre durante la copia di file su/dal sistema remoto.

RSYNC è un ottimo strumento per la copia di file da origine a destinazione a livello locale o remoto. Include un ampio set di opzioni che offrono flessibilità e controllo durante il trasferimento di file da/dal sistema remoto.