GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Rsync:20 utili esempi in Linux

Introduzione

Rsync, o Remote Sync, è uno strumento da riga di comando gratuito che consente di trasferire file e directory a destinazioni locali e remote. Rsync viene utilizzato per eseguire il mirroring, eseguire backup o migrare i dati su altri server.

Questo strumento è veloce ed efficiente, copia solo le modifiche dalla fonte e offre opzioni di personalizzazione.

Segui questo tutorial per imparare a usare rsync con 20 esempi di comandi per coprire la maggior parte dei casi d'uso in Linux.

Prerequisiti

  • Utente con sudo o root privilegi
  • Accesso a un terminale/riga di comando
  • Accesso SSH per esempi di rsync remoti

Sintassi del comando Rsync

La sintassi per rsync il comando cambia a seconda dell'uso dello strumento. Tratteremo tutti gli scenari nei seguenti esempi. La sintassi di Rsync nella sua forma più semplice è simile a questa:

rsync options SOURCE DESTINATION

I trasferimenti di dati remoti richiedono di specificare l'indirizzo di un host, ma ne parleremo più avanti.

Opzioni Risincronizzazione

Lo strumento rsync include molte opzioni. Puoi inserire rsync nel tuo terminale e ottieni tutti i dettagli. Elencheremo alcune delle opzioni di rsync più comuni.

Questi includono:

-r Consente di sincronizzare i dati in modo ricorsivo ma non mantiene la proprietà di utenti e gruppi, autorizzazioni, timestamp o collegamenti simbolici.
-a La modalità archivio si comporta come la modalità ricorsiva ma mantiene tutti i permessi sui file, i collegamenti simbolici, la proprietà dei file, ecc.
-z Utilizzato per comprimere i dati durante i trasferimenti per risparmiare spazio.
-b Esegue un backup durante la sincronizzazione dei dati.
-h Mostra i numeri nell'output in un formato leggibile.
-n Fa una corsa a secco. Utilizzato per il test prima che avvenga la sincronizzazione effettiva.
-e Indica a rsync di utilizzare il protocollo SSH per i trasferimenti remoti.
-progress Visualizza l'avanzamento del trasferimento durante la sincronizzazione.
-v Risultato dettagliato. Visualizza i dettagli del trasferimento.
-q Utilizzato per sopprimere l'output per il comando e le opzioni rsync.

Esempi di comando Rsync

Rsync è uno strumento di sincronizzazione versatile che puoi personalizzare per adattarlo al tuo uso specifico. In questa guida utilizzeremo l'archivio (-a ) e prolisso (-v ) opzioni quando necessario.

Fare riferimento agli esempi di rsync di seguito per coprire la maggior parte dell'utilizzo di rsync.

1. Copia un singolo file in locale

Per copiare un file in un'altra directory su un computer locale, digita il percorso completo del file di origine, seguito dalla destinazione di destinazione.

Ad esempio:

rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/rsync/

Il comando trasferisce il sample.txt file nel rsync directory. Se la directory di destinazione non esiste, aggiungi una barra alla fine e rsync la creerà, come nel nostro esempio.

Se desideri copiare un file dalla directory di lavoro corrente, puoi inserire il nome del file, non il percorso completo.

2. Copia più file in locale

Per copiare più file con rsync, aggiungi i percorsi completi dei file di origine:

rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt /home/test/Desktop/rsync

Dovresti usare questo metodo per un numero limitato di file. Se l'elenco è più grande, puoi fare riferimento a --exclude opzione.

3. Copia una directory e tutte le sottodirectory in locale (copia file e directory in modo ricorsivo)

Per copiare una directory e il suo contenuto in un'altra posizione sul tuo computer, usa il -a o -r opzione. Abbiamo utilizzato l'archivio opzione :

rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync

L'esempio sopra mostra come copiare Linux nella directory rsync directory. Nota che non abbiamo usato la barra finale dopo Linux . Quindi, lo strumento rsync ha creato Linux directory e il suo contenuto all'interno di rsync directory.

4. Copia un file o una directory da una macchina locale a una remota

Per copiare la directory /home/test/Desktop/Linux su /home/test/Desktop/rsync su una macchina remota, è necessario specificare l'indirizzo IP della destinazione.

Aggiungi l'indirizzo IP e la destinazione dopo la directory di origine. Ricordati di inserire i due punti (: ) dopo l'indirizzo IP dell'host remoto, senza spazi prima della destinazione.

Il comando si presenta così:

rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync

Immettere la password per l'utente corrente per continuare. Se desideri utilizzare un altro account per la connessione remota, specificalo prima dell'indirizzo IP:

rsync -a /home/test/Desktop/Linux [email protected]:/home/test/Desktop/rsync

Per copiare un singolo file su un host remoto, specifica il percorso completo del file e la destinazione.

Ad esempio:

rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync

5. Copia più file o directory da una macchina locale a una remota

Simile alla copia dei dati in locale, elenca più file o più percorsi di directory che desideri copiare su un server remoto. Segui la stessa sintassi della copia di un singolo file o directory.

Ad esempio:

rsync -av /home/test/Desktop/Linux/ /home/test/Music 192.168.56.100:/home/test/Desktop/rsync

6. Specifica il protocollo rsync per i trasferimenti remoti

Lo strumento rsync può essere istruito con il -e opzione utilizzare un protocollo specifico per i trasferimenti di file. Per utilizzare Rsync su SSH per trasferire file in remoto, aggiungi -e ssh al rsync comando.

Ad esempio, per trasferire sample.txt dal desktop al desktop di una macchina remota:

rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop

7. Copia un file o una directory da un telecomando a un computer locale

Rsync supporta il trasferimento di file da un server remoto al tuo computer locale.

Per estrarre una directory da un server, specifica il suo indirizzo IP prima dell'origine.

Ad esempio:

rsync -av 192.168.56.100:/home/test/Desktop/DirM /home/test/Desktop

Questo comando ha copiato la DirM directory da 192.168.56.100 a /home/test/Desktop su un server locale.

Per copiare un file specifico da un host remoto, immettere il percorso completo del file di origine e la destinazione sul computer locale. Ad esempio:

rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt /home/test/Desktop

8. Copia più file o directory da una macchina locale a una remota

Per trasferire più file o più directory da un server remoto, elencare i percorsi tra parentesi graffe dopo l'indirizzo IP del server. Separa i percorsi con una virgola.

Ad esempio:

rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} /home/test/rsync

Lo stesso vale per i file. Elenca tutti i file di cui hai bisogno tra parentesi graffe.

9. Mostra l'avanzamento della rsync durante il trasferimento dei dati

Quando esegui un backup di dati di grandi dimensioni, potresti voler visualizzare l'avanzamento del trasferimento.

Aggiungi il --progress segnala al rsync comando per visualizzare la quantità di dati trasferiti, la velocità di trasferimento e il tempo rimanente.

Ad esempio, per eseguire il backup di Dir1 su un server remoto e mostra lo stato di avanzamento, inserisci:

rsync -av --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync

10. Elimina un file sorgente o una directory inesistente dalla destinazione

Usa il --delete opzione per mantenere sincronizzati l'origine e la destinazione.

Questa opzione dice a rsync di eliminare qualsiasi file o directory nella destinazione se l'origine non ce l'ha.

rsync -av --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync

11. Elimina i file di origine dopo il trasferimento

In alcuni scenari, potresti voler eliminare i file di origine dopo il trasferimento. Ad esempio, potresti spostare un backup settimanale su un nuovo server. Una volta terminato il trasferimento, non avrai più bisogno dei file di origine sul vecchio server.

In tal caso, utilizza il --remove-source-files flag per eliminare il file di origine specificato.

Ad esempio, questo comando trasferisce il file di backup weekly.zip e quindi lo elimina dalla fonte:

rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/

12. Rsync Dry Run

Rsync è un potente strumento di sincronizzazione. Poiché questo strumento ti consente di copiare ed eliminare i dati, ti consigliamo di eseguire prima una prova a secco per verificare se rsync fa ciò che volevi.

L'opzione di prova è particolarmente utile quando si desidera eliminare i file. Per eseguire una prova a secco, utilizza il --dry-run opzione e segui la normale sintassi di rsync.

Ad esempio:

rsync -av --dry-run --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync

L'output ha lo stesso aspetto di quando stai effettivamente sincronizzando i file. Tuttavia, questa volta i dati non verranno sincronizzati. A conferma dell'avvenuto test e non dell'effettivo trasferimento, il terminale mostra (DRY RUN) in basso.

13. Imposta la dimensione massima del file per il trasferimento

Per determinare la dimensione massima del file che rsync trasferirà, utilizza il --max-size=add_size .

Ad esempio, per trasferire file di dimensioni non superiori a 500 KB, utilizzare questo comando:

rsync -av --max-size=500k /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/

14. Imposta la dimensione minima del file per il trasferimento

Usa --min-size=add_size con rsync quando non si desidera trasferire file di dimensioni inferiori alla dimensione specificata. Questa opzione è utile, ad esempio, quando vuoi saltare piccoli file di registro o miniature.

Per saltare qualsiasi file di dimensioni inferiori a 10 KB, esegui questo comando:

rsync -av --min-size=10k /home/test/Desktop/ 192.168.56.100:/home/test/Desktop/rsync/

15. Imposta il limite di larghezza di banda di rsync

Se vuoi determinare il limite di larghezza di banda durante il trasferimento di dati tra macchine, usa --bwlimit=KB/s .

Questa opzione è utile quando non vuoi intasare il throughput della tua rete.

Per impostare la velocità di trasferimento massima su 50 KB/s, inserisci:

rsync -av --bwlimit=50 --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/

Abbiamo anche usato il --progress opzione per dimostrare l'utilizzo di --bwlimit .

16. Copia tipo di file specifico

Puoi usare rsync per copiare solo un tipo di file specifico. Per farlo, usa l'asterisco (* ) al posto del nome del file e aggiungi l'estensione.

Ad esempio, per copiare solo file .txt, inserisci:

rsync -v /home/test/Documents/*.txt /home/test/Desktop/rsync/

Questo rsync Il comando trasferisce tutti i file di testo dai Documenti nella directory rsync directory sul desktop.

17. Copia la struttura della directory ma salta i file

Rsync ti consente di trasferire solo la struttura delle directory se non hai bisogno dei file in un'altra posizione.

Per farlo, aggiungi -f"+ */" -f"- *" prima della directory di origine.

Ad esempio, per copiare la struttura di Linux directory in Documenti , inserisci:

rsync -av -f"+ */" -f"- *"  /home/test/Desktop/Linux /home/test/Documents

18. Aggiungi il timbro della data al nome della directory

Puoi facilmente aggiungere una data al nome di una directory se desideri apporre un timbro della data ai tuoi trasferimenti.

Aggiungi $(date +%Y-%m-%d) al nome della directory di destinazione che si desidera creare. Questa opzione è utile quando vuoi tenere traccia di quando sono avvenuti i trasferimenti senza aprire le proprietà della directory.

Ad esempio:

rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +%Y-%m-%d)

19. Non copiare il file di origine se viene modificato lo stesso file di destinazione

Se mantieni sincronizzate due directory, rsync non copia un file se lo stesso esiste nella destinazione.

A volte può succedere che modifichi un file nella destinazione e non desideri che rsync lo sovrascriva.

Per evitare di sovrascrivere i file di destinazione modificati, utilizza il -u opzione.

Ad esempio:

rsync -avu /home/test/Desktop/Linux/ /home/test/Desktop/rsync

20. Mostra la differenza tra i file di origine e di destinazione

Quando inizi a trasferire i dati, puoi utilizzare il -i flag con rsync per verificare se c'è una differenza tra la sorgente e la destinazione.

Ad esempio:

rsync -avi /home/test/Desktop/Linux/ /home/test/Desktop/rsync

L'esempio sopra mostra il sample2rs.txt manca il file nella destinazione.

Le possibili lettere nell'output sono:

  • f sta per file
  • d mostra che il file di destinazione è in questione
  • t mostra che il timestamp è cambiato
  • s mostra che la dimensione è cambiata

Linux
  1. Comando cp in Linux:7 esempi pratici

  2. Esempi pratici di comando rsync in Linux

  3. comando Linux cp

  4. 7 Esempi di comandi Linux df

  5. sa Esempi di comandi in Linux

17 utili esempi di comandi rsync (sincronizzazione remota) in Linux

Comando Rsync in Linux con esempi

Esempi di comandi Linux Rsync per principianti

15 esempi pratici di comando Rsync in Linux

Esempi di comandi Linux rsync

Esempi di comandi id in Linux