Ayúdanos a seguir proporcionándote tutoriales gratuitos y de calidad desactivando tu bloqueador de anuncios. suscriptores a nuestro sitio.

Cómo excluir archivos y carpetas (directorios) con Rsync en Linux

27 feb 2021 2 min di lettura
Cómo excluir archivos y carpetas (directorios) con Rsync en Linux
Tabla de contenidos

Introducción

Rsync es una utilidad de línea de comandos rápida y versátil que sincroniza archivos y carpetas entre dos ubicaciones en un shell remoto.

Con Rsync, puede reflejar datos, crear copias de seguridad incrementales y copiar archivos entre sistemas. Al copiar datos, es posible que desee excluir uno o más archivos o directorios por nombre o ubicación.

En este tutorial, le mostraremos cómo excluir archivos y directorios con rsync.

Antes de empezar

Debe tener una comprensión básica de cómo funciona rsync.

En los siguientes ejemplos, usaremos rsync con la opción -a Esto permite a rsync sincronizar directorios de forma recursiva, transferir dispositivos especiales y bloquear y preservar enlaces simbólicos, tiempos de modificación, grupos, propiedad y permisos.

Al excluir archivos o directorios, se deben utilizar sus rutas relativas al directorio de origen.

Hay dos opciones para especificar los archivos y carpetas que desea excluir:

  • Desde una línea de comando, usando la opción --exclude
  • Desde un archivo, usando la --exclude-from.

Excluir un archivo específico

Para excluir un archivo específico, especifique la ruta relativa al archivo con la opción --exclude

En el siguiente ejemplo, el src_directory/file.txt no se transferirá:

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

Excluir un directorio específico

Excluir un directorio específico es lo mismo que excluir un archivo, simplemente pase la ruta relativa del directorio con la --exclude como se muestra a continuación:

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

Si desea excluir el contenido del directorio pero no el directorio en sí, use dir1/* lugar de dir1:

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

Excluir varios archivos o directorios

Para excluir varios archivos o directorios, simplemente especifique varias opciones de --exclude

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

Si prefiere utilizar una sola --exclude, puede enumerar los archivos y directorios que desea excluir entre llaves {} separados por una coma como se muestra a continuación:

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

Si la cantidad de archivos y /o directorios que desea excluir es grande, en lugar de usar varias --exclude, puede especificar los archivos y carpetas que desea excluir en un archivo y especificar el archivo con la --exclude-from.

El siguiente comando hace exactamente lo mismo que el anterior:

nano exclude-file.txt

Escriba la lista de archivos y carpetas que desea excluir:

file1.txt
 dir1/*
 dir2

Luego ejecute el comando que especifica el archivo:

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

Excluya varios archivos o directorios según un patrón

Con rsync también puede excluir archivos y directorios según un patrón que coincida con el nombre del archivo o directorio.

Por ejemplo, para excluir todos los .jpg, ejecutaría:

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

Es un poco más complicado excluir todos los demás archivos y directorios, excepto aquellos que coinciden con un cierto tipo. Supongamos que desea excluir todos los demás archivos y directorios, excepto los archivos que terminan en .jpg.

Una opción es usar el siguiente comando:

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

Cuando se utilizan varias opciones de inclusión /exclusión, se aplica la primera regla de coincidencia.

  • --include='*.jpg' - Primero incluimos todos los archivos .jpg
  • --include='*/' - Luego incluimos todos los directorios dentro del directorio src_directory Sin este rsync, copie los *.jpg solo en el directorio de nivel superior.
  • -m - Elimina directorios vacíos.

Otra opción sería redirigir la salida del comando de búsqueda a rsync:

find src_directory/-name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/dst_directory/
  • -printf %P\\0\\n - eliminará src_directory/ de la ruta del archivo.
  • --files-from=- - significa incluir solo archivos de entrada estándar (archivos pasados por el comando de búsqueda).

Conclusión

En este tutorial, aprendió cómo excluir archivos y directorios al transferir datos con Rsync. Hay mucho más que saber sobre Rsync en la página del Manual del usuario de Rsync.

Apóyenos si le gusta nuestro contenido. Gracias.

Buy me a coffeeBuy me a coffee

Únase a la conversación

Apóyenos con una donación.

Genial! A continuación, complete el pago para obtener acceso completo a Noviello.it.
Bienvenido de nuevo! Has iniciado sesión correctamente.
Te has suscrito correctamente a Noviello.it.
Éxito! Su cuenta está completamente activada, ahora tiene acceso a todo el contenido.
Éxito! Su información de facturación ha sido actualizada.
Su facturación no se actualizó.