GNU/Linux >> Linux Esercitazione >  >> Linux

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

Rsync è uno strumento molto potente per eseguire backup o sincronizzare file e directory tra due diverse posizioni (o server).

Lo sai già, poiché in precedenza ti abbiamo presentato esempi pratici su rsync.

In una situazione di backup tipica, potresti voler escludere uno o più file (o directory) dal backup. Potresti anche voler escludere un tipo di file specifico da rsync.

Questo articolo spiega come ignorare più file e/o directory durante la rsync con esempi.

Innanzitutto, crea una struttura di directory di esempio come mostrato di seguito (con alcuni file vuoti) che può essere utilizzata a scopo di test.

$ cd ~
$ mkdir -p source/dir1/dir2
$ mkdir -p source/dir3
$ touch source/file1.txt
$ touch source/file2.txt
$ touch source/dir1/dir2/file3.txt
$ touch source/dir3/file4.txt

Il comando precedente creerà una directory di origine (sotto la tua directory home) con la seguente struttura.

source
- file1.txt
- file2.txt
- dir1
  - dir2
    - file3.txt
- dir3
  - file4.txt

1. Escludi una directory specifica

Se non vuoi sincronizzare la dir1 (incluse tutte le sue sottodirectory) dalla cartella di origine a quella di destinazione, usa l'opzione rsync –exclude come mostrato di seguito.

$ rm -rf destination

$ rsync -avz --exclude 'dir1' source/ destination/
building file list ... done
created directory dest
./
file1.txt
file2.txt
dir3/
dir3/file4.txt

Verificare per assicurarsi che dir1 non sia copiato dalla directory di origine alla directory di destinazione.

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir3
destination/dir3/file4.txt

2. Escludi più directory che corrispondono a un modello

L'esempio seguente escluderà qualsiasi directory (o sottodirectory) in source/ che corrisponde al modello "dir*"

$ rm -rf destination

$ rsync -avz --exclude 'dir*' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt

Verifica la directory di destinazione per assicurarti che non abbia copiato alcuna directory contenente la parola chiave "dir".

$ find destination
destination
destination/file2.txt
destination/file1.txt

3. Escludi un file specifico

Per escludere un file specifico, utilizza il percorso relativo del file nell'opzione di esclusione come mostrato di seguito.

$ rm -rf destination

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt
dir1/
dir1/dir2/
dir3/
dir3/file4.txt

Verifica la directory di destinazione per assicurarti che non abbia copiato il file specifico ( dir1/dir2/file3.txt in questo esempio).

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir1
destination/dir1/dir2
destination/dir3
destination/dir3/file4.txt

4. Il percorso di esclusione è sempre relativo

Se non stai attento, potresti commettere questo errore.

Nell'esempio seguente, l'opzione di esclusione sembra avere un percorso completo (ad esempio /dir1/dir2/file3.txt). Ma, dal punto di vista di rsync, il percorso di esclusione è sempre relativo e verrà trattato come dir1/dir2/file3.txt. Nell'esempio seguente, rsync cercherà dir1 nella directory di origine (e non nella directory / root).

$ rsync -avz --exclude '/dir1/dir2/file3.txt' source/ destination/

Quindi, il comando sopra è esattamente lo stesso del seguente. Giusto per evitare confusione (e per facilitarne la lettura), non dare / davanti al percorso di esclusione.

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/

5. Escludi un tipo di file specifico

Per escludere un tipo di file specifico con un'estensione specifica, utilizzare il modello appropriato. Ad esempio, per escludere tutti i file che contengono .txt come estensione, procedi come segue.

$ rsync -avz --exclude '*.txt' source/ destination/
building file list ... done
created directory destination
./
dir1/
dir1/dir2/
dir3/

Verifica la directory di destinazione per assicurarti che non abbia copiato i file *.txt.

$ find destination
destination
destination/dir1
destination/dir1/dir2
destination/dir3

Nota: Quanto sopra è molto utile, quando vuoi eseguire il backup della tua home directory, ma esclude tutti quei file di immagini e video di grandi dimensioni che hanno un'estensione di file specifica.

6. Escludi più file e directory contemporaneamente

Quando desideri escludere più file e directory, puoi sempre specificare più opzioni di esclusione di rsync nella riga di comando, come mostrato di seguito.

$ rsync -avz --exclude file1.txt --exclude dir3/file4.txt source/ destination/

Attesa. E se avessi tonnellate di file che voglio escludere da rsync?

Non posso continuare ad aggiungerli nella riga di comando usando multiple –exclude, che è difficile da leggere e difficile da riutilizzare il comando rsync per dopo.

Quindi, il modo migliore è usare l'opzione rsync –exclude-from come mostrato di seguito, dove puoi elencare tutti i file (e le directory) che desideri escludere in un file.

Innanzitutto, crea un file di testo con un elenco di tutti i file e le directory di cui non desideri eseguire il backup. Questo è l'elenco di file e directory che vuoi escludere dalla rsync.

$ vim exclude-list.txt
file1.txt
dir3/file4.txt

Quindi, esegui la rsync usando l'opzione –exclude-from con exclude-list.txt come mostrato di seguito.

$ rm -rf destination

$ rsync -avz --exclude-from 'exclude-list.txt' source/ destination/
building file list ... done
created directory destination
./
file2.txt
dir1/
dir1/dir2/
dir1/dir2/file3.txt
dir3/

Verifica la directory di destinazione per assicurarti che non venga eseguito il backup dei file e delle directory elencati nel file exclude-list.txt.

$ find destination
destination
destination/file2.txt
destination/dir1
destination/dir1/dir2
destination/dir1/dir2/file3.txt
destination/dir3

Linux
  1. Come inviare e scaricare file utilizzando Rsync

  2. CloudCross:sincronizza file e directory con più archivi cloud

  3. Linux Elimina file e directory

  4. Come copiare file in Linux e Unix? 10 cp Esempi di comandi

  5. Come copiare le directory in modo ricorsivo utilizzando rsync escludendo file specifici

Come utilizzare il comando cp per copiare file e directory

Come sincronizzare file e directory utilizzando Zaloha.sh

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

Mantenere sincronizzati file e directory Linux con rsync

Come eliminare file e directory utilizzando il terminale in Debian 10

Come eliminare file e directory utilizzando la riga di comando di Linux