GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare rsync per escludere file e directory nel trasferimento di dati

Introduzione

Rsync è un utile strumento da riga di comando di Linux che sincronizza e copia file e directory. Puoi utilizzare lo strumento per sincronizzare i dati in locale tra directory e unità o tra due macchine remote.

I comandi di base rsync in Linux sincronizzano tutto da una posizione specificata. In molti scenari di backup, potresti voler escludere file, directory o tipi di file specifici.

Segui gli esempi in questa guida per scoprire come escludere file o directory con rsync. Elencheremo i casi d'uso esclusi più comuni per coprire l'utilizzo quotidiano di rsync.

Prerequisiti

  • Utente con sudo o root privilegi
  • Accesso a una riga di comando/finestra del terminale
  • Rsync installato sul tuo sistema

Come funziona l'opzione di esclusione di rsync

Il --exclude opzione con il rsync comando utilizza percorsi relativi alla directory di origine. Aggiungi il --exclude opzione per rsync comando, seguito dal percorso relativo a una directory o a uno o più file.

La sintassi di base per l'opzione di esclusione rsync appare così:

rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/

Sostituisci sorgente/ con il nome della directory che desideri utilizzare come origine per il trasferimento dei dati in un'altra posizione.

Sostituisci destinazione/ con il nome della directory che rsync utilizzerà come posizione di destinazione per i tuoi dati. Se la directory non esiste, rsync ne crea una per te e trasferisce i file in quella directory.

Per eseguire il backup dei file in una posizione remota, segui la nostra altra guida per scoprire come copiare o trasferire file con rsync su SSH.

Escludi un file specifico

Negli esempi di esclusione di rsync riportati di seguito, utilizzeremo il -a (archivio ) e -v (prolisso ) opzioni (-av ). Il -a l'opzione sincronizza le directory in modo ricorsivo mantenendo autorizzazioni, collegamenti simbolici, proprietà e impostazioni di gruppo. Il -v flag è opzionale e stampa l'avanzamento e lo stato del comando rsync.

Per escludere un file durante il trasferimento del contenuto di una cartella con rsync, specificare il file e il relativo percorso.

Ad esempio:

rsync -av --exclude 'testfile1.txt' sourcedir/ destinationdir/

Questo comando ti permette di copiare i file in destinationdir da sourcedir ma escludere testfile1.txt.

Come puoi vedere nell'output, testfile1.txt non è nell'elenco.

Per farlo, esegui questo comando:

sudo rm -rf destinationdir

Escludi una directory specifica

Ora che sai come usare rsync --exclude file, usa lo strumento allo stesso modo per escludere una directory.

Specifica una directory che desideri escludere (invece del nome di un file):

rsync -av --exclude 'dir1' sourcedir/ destinationdir/

Questo comando ha copiato il contenuto di sourcedir in destinationdir ed escluso dir1 , come si vede nell'output.

Escludi file o directory in base a uno schema

Usa un asterisco * (carattere jolly) quando si definisce un nome di file o directory per escludere tutto ciò che corrisponde al modello.

Per escludere i file che iniziano con prova , esegui questo comando:

rsync -av --exclude 'test*' sourcedir/ destinationdir/

Tutti i file e le directory che corrispondono a questo modello verranno esclusi dal trasferimento.

Puoi anche utilizzare il carattere jolly in una pratica simile per escludere tutte le directory che terminano con uno schema specifico .

Esegui questo comando per escludere tutte le directory che terminano con il numero 3:

rsync -av --exclude '*3' sourcedir/ destinationdir/

Puoi utilizzare un asterisco prima e dopo un pattern per perfezionare ulteriormente il --exclude criterio.

Escludi un tipo di file specifico

Lo strumento rsync ti consente di escludere determinati tipi di file durante la sincronizzazione dei dati. Utilizza un asterisco * seguito dall'estensione del tipo di file che desideri escludere.

Ad esempio, potresti voler eseguire il backup di una directory che contiene molti .iso file di cui non è necessario eseguire il backup.

Per escludere un tipo di file specifico, in questo caso .iso , esegui questo comando:

rsync -av --exclude '*.iso' sourcedir/ destinationdir/

L'output mostra che rsync non ha trasferito .iso File. Abbiamo aggiunto il contenuto della directory di origine nell'immagine per il confronto.

Escludi file per dimensione

Durante i trasferimenti di file, puoi specificare la dimensione minima o massima dei file che desideri escludere. Se la tua directory di origine contiene molti file di grandi dimensioni di cui non desideri eseguire il backup, utilizza il --max-size=size_in_mb_or_gb opzione. Sostituisci size_in_mb_or_gb con la dimensione desiderata.

Ad esempio, per escludere tutti i file più grandi di 500 MB, esegui questo comando:

rsync -av --max-size=500m sourcedir/ destinationdir/

D'altra parte, escludere file più piccoli di una dimensione specifica , usa il --min-size=size_in_mb_or_gb opzione.

Ad esempio, vuoi trasferire una directory con immagini, ma ci sono molti file di anteprima. Se tutte le tue immagini sono più grandi di 1 MB, puoi escludere tutti i file più piccoli di quella dimensione.

Per farlo, esegui questo comando:

rsync -av --min-size=1m sourcedir/ destinationdir/

Non utilizzare il --exclude opzione rsync con quando si definisce la dimensione minima o massima del file.

Escludi più file o directory

Aggiungi più --exclude opzioni per escludere più file o directory. Puoi combinare qualsiasi rsync --exclude cartella e rsync --exclude file comandi per trasferire solo i dati necessari. Qualsiasi comando di cui abbiamo parlato in precedenza può essere utilizzato in una riga.

Il comando seguente escluderà tutti i file con .txt estensione, nonché la dir3 e dir4 directory:

rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/

Puoi aggiungere tutti i --exclude voci di cui hai bisogno. Per mantenere il comando in ordine, puoi specificare file e directory in --exclude opzione utilizzando parentesi graffe. Separa i motivi usando una virgola.

Ad esempio, possiamo abbreviare il comando precedente in questo modo:

rsync -av --exclude={'*.txt','dir3','dir4'} sourcedir/ destinationdir/

L'output mostra che i file e le directory elencati sono esclusi dal trasferimento.

Escludi file e directory da un elenco

Quando devi escludere un numero elevato di file e directory differenti, puoi utilizzare rsync --exclude-from bandiera. A tale scopo, crea un file di testo con il nome dei file e delle directory che desideri escludere. Quindi, passa il nome del file a --exlude-from opzione.

Il comando si presenta così:

rsync -av --exclude-from={'list.txt'} sourcedir/ destinationdir/

Lo strumento rsync salta tutti i file e le directory che elenchi nel file. Puoi aggiungere qualsiasi modello utilizzato in questa guida.

Il file di esempio che abbiamo usato nel comando precedente contiene i seguenti modelli:


Linux
  1. Come trasferire file tra due computer utilizzando i comandi nc e pv

  2. Come utilizzare Netcat per trasferire file su Linux

  3. Come trasferire file in Linux con SCP e Rsync

  4. 6 Esempi di rsync per escludere più file e directory utilizzando exclude-from

  5. Come utilizzare FTP in Linux per trasferire file

Come utilizzare il comando cp per copiare file e directory

Come utilizzare il comando SCP per trasferire file

Come sincronizzare file e directory utilizzando Zaloha.sh

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Come utilizzare il comando rsync per copiare i dati localmente e su SSH

Come installare e utilizzare Okteta per file di dati RAW in Linux