Androide

Cómo excluir archivos y directorios con rsync

move files and directories in linux - mv command, move or rename, files and directories in linux -17

move files and directories in linux - mv command, move or rename, files and directories in linux -17

Tabla de contenido:

Anonim

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 en función de su nombre o ubicación.

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

Antes de que empieces

Debe tener un conocimiento básico de cómo funciona rsync.

En los ejemplos a continuación, usaremos rsync con la opción -a . Esto le dice a rsync que sincronice directorios de forma recursiva, transfiera dispositivos especiales y bloquee 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 comando, usando la --exclude --exclude. Desde un archivo, usando la --exclude-from .

Excluir un archivo específico

Para excluir un archivo específico, pase la ruta relativa al archivo a la opción --exclude .

En el siguiente ejemplo, el archivo 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 al directorio a la opción --exclude como se muestra a continuación:

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

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

Excluir múltiples archivos o directorios

Para excluir múltiples archivos o directorios, simplemente especifique múltiples opciones de --exclude :

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

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 utilizar múltiples opciones --exclude , 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/ exclude-file.txt

file1.txt dir1/* dir2

Excluir múltiples archivos o directorios basados ​​en un patrón

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

Por ejemplo, para excluir todos los archivos .jpg 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 cierto 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 utiliza la opción de inclusión / exclusión múltiple, se aplica la primera regla coincidente.

  • --include='*.jpg' - Primero incluimos todos los archivos .jpg . --include='*/' - Entonces estamos incluyendo todos los directorios dentro del directorio in src_directory . Sin esto, rsync solo copiará archivos *.jpg en el directorio de nivel superior. -m : elimina los directorios vacíos.

Otra opción sería canalizar la salida del comando find a rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - eliminará el src_directory/ de la ruta del archivo. --files-from=- - significa incluir solo los archivos de la entrada estándar (archivos pasados ​​del comando find).

Conclusión

En este tutorial, aprendió a 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.

terminal rsync