GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo copiar directorios recursivamente usando rsync mientras se excluyen archivos específicos

Pregunta :¿Cómo copiar carpetas recursivamente mientras se excluyen carpetas/archivos específicos al usar rsync?

En general, usamos el comando 'cp' para copiar archivos, pero desafortunadamente, el comando 'cp' no tiene la función "excluir", por lo que necesitamos escribir algunos scripts para excluir los archivos no deseados, o podemos usar otra herramienta. rsync'.

Desde la página man del comando rsync:

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

La sintaxis del comando rsync para copiar directorios mientras se excluyen archivos/directorios específicos se muestra a continuación:

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

Por ejemplo, si no queremos copiar todos los archivos de la carpeta de Oracle a Oraclebak excepto '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

La ruta de exclusión es la ruta relativa del archivo en 'SRC', p. queremos excluir "oracle/oradata/rmanbackup", y el directorio principal es oracle, por lo que la ruta de exclusión es '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

También puede usar la opción “–exclude-from=FILE ” si tiene más archivos/directorios para excluir. En ese caso, solo tiene que enumerar los archivos/directorios que se excluirán en un archivo y proporcionar la ruta del archivo a la opción “–exclude-from=”

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

Por ejemplo:

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

Aquí,
/tmp/exclude_list contiene una lista de archivos/directorios que se excluirán mientras se copian los demás.


Linux
  1. Cómo excluir directorios específicos de la copia en Linux

  2. ¿Cómo usar el comando Rsync en Linux?

  3. Usando rsync para sincronizar archivos

  4. ¿Cómo copiar directorios en un directorio usando install en bash?

  5. ¿Puede scp copiar directorios recursivamente?

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo copiar archivos con una extensión de archivo específica recursivamente

Cómo excluir una extensión de archivo específica al copiar archivos de forma recursiva

Cómo copiar archivos en Linux usando el comando CP

Cómo copiar archivos y directorios en la terminal de Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux