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 directoriosrc_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.