GNU/Linux >> Linux Esercitazione >  >> Linux

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

Domanda :Come copiare le cartelle in modo ricorsivo escludendo cartelle/file specifici quando si utilizza rsync?

In generale, utilizziamo il comando 'cp' per copiare i file, ma sfortunatamente il comando 'cp' non ha la funzione "escludi", quindi dobbiamo scrivere degli script per escludere i file indesiderati, oppure possiamo usare un altro strumento ' rsync'.

Dalla pagina man del comando rsync:

$ man rsync
...
  -r, --recursive             recurse into directories
  --exclude=PATTERN           exclude files matching PATTERN

La sintassi del comando rsync per copiare le directory escludendo file/directory specifici è la seguente:

$ rsync -r --exclude 'file_path' 'SRC' 'DEST'

Ad esempio, se non vogliamo copiare tutti i file della cartella Oracle in Oraclebak eccetto 'oracle/oradata/rmanbackup':

$ du -sh oracle/*
40K oracle/extapi
1.1G oracle/oradata                    ------> sub directory of oracle
4.0K oracle/test1
4.0K oracle/test2
4.0K oracle/test3
4.0K oracle/test4
4.0K oracle/test5
# du -sh oracle/oradata/*
4.0K oracle/oradata/date1
4.0K oracle/oradata/date2
4.0K oracle/oradata/date3
4.0K oracle/oradata/date4
4.0K oracle/oradata/date5
1.1G oracle/oradata/rmanbackup  -------> we need to exclude this directory

Il percorso di esclusione è il percorso relativo del file in "SRC", ad es. vogliamo escludere "oracle/oradata/rmanbackup" e la directory padre è oracle, quindi il percorso di esclusione è "oradata/rmanbackup":

# rsync -r --exclude 'oradata/rmanbackup' oracle/ oraclebak
# du -sh oraclebak/oracle/*
40K oraclebak/oracle/extapi
24K oraclebak/oracle/oradata
4.0K oraclebak/oracle/test1
4.0K oraclebak/oracle/test2
4.0K oraclebak/oracle/test3
4.0K oraclebak/oracle/test4
4.0K oraclebak/oracle/test5

Puoi anche utilizzare l'opzione “–exclude-from=FILE ” se hai più file/directory da escludere. In tal caso, devi solo elencare i file/directory da escludere in un file e fornire il percorso del file all'opzione “–exclude-from=”

# man rsync
--exclude-from=FILE     read exclude patterns from FILE

Ad esempio:

# rsync -r --exclude-file=/tmp/exclude_list oracle/ oraclebak

Qui,
/tmp/exclude_list contiene un elenco di file/directory da escludere durante la copia degli altri.


Linux
  1. Come escludere directory specifiche dalla copia in Linux

  2. Come usare il comando Rsync in Linux?

  3. Utilizzo di rsync per sincronizzare i file

  4. Come copiare le directory in una directory usando l'installazione in bash?

  5. Può scp copiare le directory in modo ricorsivo?

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

Come copiare file con estensione di file specifica in modo ricorsivo

Come escludere un'estensione di file specifica durante la copia ricorsiva di file

Come copiare file in Linux usando il comando CP

Come copiare file e directory nel terminale Linux

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