GNU/Linux >> Linux Esercitazione >  >> Linux

Come escludere file e directory con Rsync

Rsync è un'utilità della riga di comando veloce e versatile che sincronizza file e cartelle tra due posizioni su una shell remota.

Con Rsync puoi eseguire il mirroring dei dati, creare backup incrementali e copiare file tra sistemi. Quando copi i dati, potresti voler escludere uno o più file o directory in base al loro nome o posizione.

In questo tutorial, ti mostreremo come escludere file e directory con rsync.

Prima di iniziare #

Dovresti avere una conoscenza di base di come funziona rsync.

Negli esempi seguenti, useremo rsync con -a , opzione. Questo dice a rsync di sincronizzare le directory in modo ricorsivo, trasferire dispositivi speciali e bloccare e preservare collegamenti simbolici, tempi di modifica, gruppo, proprietà e autorizzazioni.

Quando si escludono file o directory è necessario utilizzare i percorsi relativi alla directory di origine.

Sono disponibili due opzioni per specificare i file e le directory che desideri escludere:

  • Da una riga di comando , utilizzando --exclude opzione.
  • Da un file , utilizzando il --exclude-from opzione.

Escludi un file specifico #

Per escludere un file specifico, passa il percorso relativo del file a --exclude opzione.

Nell'esempio seguente il file src_directory/file.txt non verranno trasferiti:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Escludi una directory specifica #

Escludere una directory specifica equivale a escludere un file, basta passare il percorso relativo della directory al --exclude opzione come mostrato di seguito:

rsync -a --exclude 'dir1' src_directory/ dst_directory/

Se vuoi escludere il contenuto della directory ma non la directory stessa, usa dir1/* invece di dir1 :

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Escludi più file o directory #

Per escludere più file o directory, specifica semplicemente più --exclude opzioni:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

Se preferisci utilizzare un singolo --exclude opzione puoi elencare i file e le directory che desideri escludere tra parentesi graffe {} separati da una virgola come mostrato di seguito:

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

Se il numero di file e/o directory che desideri escludere è elevato, invece di utilizzare più --exclude opzioni puoi specificare i file e le directory che vuoi escludere in un file e passare il file a --exclude-from opzione.

Il comando seguente fa esattamente lo stesso di quello sopra:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
exclude-file.txt
file1.txt
dir1/*
dir2

Escludi più file o directory in base a uno schema #

Con rsync puoi anche escludere file e directory in base a uno schema che corrisponde al nome del file o della directory.

Ad esempio, per escludere tutti i .jpg file che eseguiresti:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

È un po' più complicato escludere tutti gli altri file e directory eccetto quelli che corrispondono a un determinato schema. Supponiamo di voler escludere tutti gli altri file e directory ad eccezione dei file che terminano con .jpg .

Un'opzione consiste nell'usare il seguente comando:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

Quando si utilizzano più opzioni di inclusione/esclusione, si applica la prima regola di corrispondenza.

  • --include='*.jpg' - Per prima cosa includiamo tutti i .jpg file.
  • --include='*/' - Quindi stiamo includendo tutte le directory all'interno di in src_directory directory. Senza questo rsync copierà solo *.jpg file nella directory di livello superiore.
  • -m - Rimuove le directory vuote.

Un'altra opzione sarebbe quella di reindirizzare l'output di find comando per rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/
  • -printf %P\\0\\n - rimuoverà la src_directory/ dal percorso del file.
  • --files-from=- - significa includere solo i file dallo standard input (file passati dal comando trova).

Conclusione #

In questo tutorial, hai imparato come escludere file e directory durante il trasferimento di dati con Rsync. C'è molto altro da sapere su Rsync nella pagina del manuale dell'utente di Rsync.


Linux
  1. Come archiviare file e directory in Linux [Parte 2]

  2. Copia i file con SCP e Rsync

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

  4. Come copiare / spostare file e directory in Linux con i comandi "cp" e "mv".

  5. Come posso escludere i file per impostazione predefinita con rsync?

Come spostare file e directory in Linux (comando mv)

Come trasferire file con Rsync su SSH

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