Rsync es una utilidad de línea de comandos rápida y versátil que sincroniza archivos y carpetas entre dos ubicaciones a través de un shell remoto.
Con Rsync puede duplicar 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 según su nombre o ubicación.
En este tutorial, le mostraremos cómo excluir archivos y directorios con rsync.
Antes de comenzar #
Debe tener un conocimiento básico de cómo funciona rsync.
En los ejemplos a continuación, usaremos rsync con -a
, opción. Esto le dice a rsync que sincronice directorios de forma recursiva, transfiera dispositivos especiales y de bloqueo y conserve enlaces simbólicos, tiempos de modificación, grupo, propiedad y permisos.
Al excluir archivos o directorios, debe usar sus rutas relativas al directorio de origen.
Hay dos opciones para especificar los archivos y directorios que desea excluir:
- Desde una línea de comandos , utilizando
--exclude
opción. - Desde un archivo , usando el
--exclude-from
opción.
Excluir un número de archivo específico
Para excluir un archivo específico, pase la ruta relativa al archivo a --exclude
opción.
En el siguiente ejemplo, el archivo src_directory/file.txt
no será transferido:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
Excluir un número de directorio específico
Excluir un directorio específico es lo mismo que excluir un archivo, simplemente pase la ruta relativa al directorio a --exclude
opción 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/*
en lugar de dir1
:
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
Excluir varios archivos o directorios #
Para excluir varios archivos o directorios, simplemente especifique varios --exclude
opciones:
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
Si prefiere usar un único --exclude
opción 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 el número de archivos y/o directorios que desea excluir es grande, en lugar de usar múltiples --exclude
opciones puede especificar los archivos y directorios que desea excluir en un archivo y pasar el archivo a --exclude-from
opción.
El siguiente comando hace exactamente lo mismo que el anterior:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
excluir-archivo.txtfile1.txt
dir1/*
dir2
Excluir 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 todo .jpg
archivos que 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 determinado patrón. 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 estamos incluyendo todos los.jpg
archivos.--include='*/'
- Entonces estamos incluyendo todos los directorios dentro desrc_directory
directorio. Sin este rsync solo copiará*.jpg
archivos en el directorio de nivel superior.-m
- Elimina los directorios vacíos.
Otra opción sería canalizar la salida de find
comando para rsync:
find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/
-printf %P\\0\\n
- eliminará elsrc_directory/
desde la ruta del archivo.--files-from=-
- significa incluir solo los archivos de la entrada estándar (archivos pasados desde 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 aprender sobre Rsync en la página del Manual del usuario de Rsync.