GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar rsync para excluir archivos y directorios en la transferencia de datos

Introducción

Rsync es una útil herramienta de línea de comandos de Linux que sincroniza y copia archivos y directorios. Puede usar la herramienta para sincronizar datos localmente entre directorios y unidades, o entre dos máquinas remotas.

Los comandos básicos de rsync en Linux sincronizan todo desde una ubicación que especifique. En muchos escenarios de copia de seguridad, es posible que desee excluir archivos, directorios o tipos de archivos específicos.

Siga los ejemplos de esta guía para aprender a excluir archivos o directorios con rsync. Enumeraremos los casos de uso de exclusión más comunes para cubrir su uso diario de rsync.

Requisitos previos

  • Usuario con sudo o raíz privilegios
  • Acceso a una línea de comando/ventana de terminal
  • Rsync instalado en su sistema

Cómo funciona la opción de exclusión de rsync

El --exclude opción con rsync El comando utiliza rutas relativas al directorio de origen. Agregue el --exclude opción a rsync comando, seguido de la ruta relativa a un directorio o archivo(s).

La sintaxis básica para la opción de exclusión de rsync se ve así:

rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/

Reemplazar fuente/ con el nombre del directorio que desea usar como fuente para la transferencia de datos a otra ubicación.

Reemplazar destino/ con el nombre de directorio que rsync utilizará como ubicación de destino para sus datos. Si el directorio no existe, rsync crea uno para usted y transfiere los archivos a ese directorio.

Para hacer una copia de seguridad de los archivos en una ubicación remota, siga nuestra otra guía para aprender a copiar o transferir archivos con rsync a través de SSH.

Excluir un archivo específico

En los ejemplos de exclusión de rsync a continuación, usaremos el -a (archivo ) y -v (detallado ) opciones (-av ). El -a La opción sincroniza los directorios de forma recursiva mientras mantiene los permisos, los enlaces simbólicos, la propiedad y la configuración del grupo. El -v flag es opcional e imprime el progreso y el estado del comando rsync.

Para excluir un archivo mientras se transfiere el contenido de una carpeta con rsync, especifique el archivo y la ruta relativa.

Por ejemplo:

rsync -av --exclude 'testfile1.txt' sourcedir/ destinationdir/

Este comando le permite copiar los archivos a destinationdir de sourcedir pero excluir testfile1.txt.

Como puede ver en el resultado, testfile1.txt no está en la lista.

Para hacerlo, ejecute este comando:

sudo rm -rf destinationdir

Excluir un directorio específico

Ahora que sabe cómo usar rsync --exclude comando de archivo, use la herramienta de la misma manera para excluir un directorio.

Especifique un directorio que desee excluir (en lugar de un nombre de archivo):

rsync -av --exclude 'dir1' sourcedir/ destinationdir/

Este comando copió el contenido de sourcedir en directorio de destino y excluyó dir1 , como se ve en la salida.

Excluir archivos o directorios según un patrón

Use un asterisco * (comodín) al definir un nombre de archivo o directorio para excluir todo lo que coincida con el patrón.

Para excluir archivos que comienzan con prueba , ejecuta este comando:

rsync -av --exclude 'test*' sourcedir/ destinationdir/

Todos los archivos y directorios que coincidan con este patrón se excluirán de la transferencia.

También puede usar el comodín en un asunto similar para excluir todos los directorios que terminan con un patrón específico .

Ejecute este comando para excluir todos los directorios que terminan con el número 3:

rsync -av --exclude '*3' sourcedir/ destinationdir/

Puede usar un asterisco antes y después de un patrón para refinar aún más el --exclude criterio.

Excluir un tipo de archivo específico

La herramienta rsync le permite excluir ciertos tipos de archivos al sincronizar datos. Usa un asterisco * seguido de la extensión del tipo de archivo que desea excluir.

Por ejemplo, es posible que desee realizar una copia de seguridad de un directorio que contiene muchos .iso archivos que no necesita respaldar.

Para excluir un tipo de archivo específico, en este caso .iso , ejecuta este comando:

rsync -av --exclude '*.iso' sourcedir/ destinationdir/

El resultado muestra que rsync no transfirió .iso archivos Agregamos el contenido del directorio de origen en la imagen para comparar.

Excluir archivos por tamaño

Durante las transferencias de archivos, puede especificar el tamaño mínimo o máximo de los archivos que desea excluir. Si su directorio de origen contiene muchos archivos grandes de los que no desea hacer una copia de seguridad, use el --max-size=size_in_mb_or_gb opción. Reemplace el size_in_mb_or_gb con el tamaño deseado.

Por ejemplo, para excluir todos los archivos mayores de 500 MB, ejecute este comando:

rsync -av --max-size=500m sourcedir/ destinationdir/

Por otro lado, para excluir archivos más pequeños que un tamaño específico , use el --min-size=size_in_mb_or_gb opción.

Por ejemplo, desea transferir un directorio con imágenes, pero hay muchos archivos en miniatura. Si todas sus imágenes tienen más de 1 MB, entonces puede excluir todos los archivos más pequeños que ese tamaño.

Para hacerlo, ejecute este comando:

rsync -av --min-size=1m sourcedir/ destinationdir/

No usar el --exclude opción rsync con al definir el tamaño mínimo o máximo del archivo.

Excluir varios archivos o directorios

Añadir varios --exclude opciones para excluir varios archivos o directorios. Puede combinar cualquier rsync --exclude carpeta y rsync --exclude archivo(s) comandos para transferir solo los datos que necesita. Cualquiera de los comandos de los que hablamos anteriormente se puede usar en una línea.

El siguiente comando excluirá todos los archivos con .txt extensión, así como el dir3 y dir4 directorios:

rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/

Puede agregar tantos --exclude las entradas que necesite. Para mantener el comando ordenado, puede especificar archivos y directorios en --exclude opción usando corchetes. Separe los patrones usando una coma.

Por ejemplo, podemos acortar el comando anterior de esta manera:

rsync -av --exclude={'*.txt','dir3','dir4'} sourcedir/ destinationdir/

El resultado muestra que los archivos y directorios enumerados están excluidos de la transferencia.

Excluir archivos y directorios de una lista

Cuando necesite excluir una gran cantidad de archivos y directorios diferentes, puede usar rsync --exclude-from bandera. Para ello, cree un archivo de texto con el nombre de los archivos y directorios que desea excluir. Luego, pasa el nombre del archivo a --exlude-from opción.

El comando se ve así:

rsync -av --exclude-from={'list.txt'} sourcedir/ destinationdir/

La herramienta rsync omite todos los archivos y directorios que enumere en el archivo. Puede agregar cualquier patrón que hayamos usado en esta guía.

El archivo de ejemplo que usamos en el comando anterior contiene los siguientes patrones:


Linux
  1. Cómo transferir archivos entre dos computadoras usando los comandos nc y pv

  2. Cómo usar Netcat para transferir archivos en Linux

  3. Cómo transferir archivos en Linux con SCP y Rsync

  4. 6 ejemplos de rsync para excluir varios archivos y directorios utilizando excluir de

  5. Cómo usar FTP en Linux para transferir archivos

Cómo usar el comando cp para copiar archivos y directorios

Cómo usar el comando SCP para transferir archivos

Cómo sincronizar archivos y directorios usando Zaloha.sh

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

Cómo usar el comando rsync para copiar datos localmente y a través de SSH

Cómo instalar y usar Okteta para archivos de datos RAW en Linux