Sincronice archivos y directorios de Linux con rsync

Los administradores (o usuarios normales) a menudo necesitan hacer una copia de seguridad de los archivos o sincronizarlos entre varias ubicaciones (incluidas las locales y las remotas) sin transferir y sobrescribir todos los archivos en el destino cada vez. Una de las herramientas más útiles en el cinturón de un administrador de sistemas para este tipo de tareas es rsync.

el rsync La herramienta puede navegar recursivamente por una estructura de directorios y actualizar una segunda ubicación con todos los archivos nuevos, modificados o eliminados. Comprueba si los archivos existen en el destino antes de enviarlos, ahorrando ancho de banda y tiempo para lo que salta. También, rsync ofrece la posibilidad de sincronizar una estructura de directorios (o incluso un solo archivo) con otro destino, local o remoto. Para lograr esto de manera eficiente, por defecto comprobará los tiempos de modificación de los archivos. También puede realizar una verificación hash rápida de los archivos en el origen y el destino para determinar si se carga o no una nueva copia, lo que ahorra tiempo y ancho de banda.

Dado que viene de forma predeterminada con la mayoría de las distribuciones de Linux, debería ser fácil comenzar. Este también es el caso con macOS, * BSD y otros sistemas operativos similares a Unix. Trabajar con rsync es simple y se puede usar en la línea de comandos, en scripts y algunas herramientas lo envuelven en una interfaz de usuario agradable para manejar tareas.

En la línea de comando, rsync generalmente se invoca usando un puñado de parámetros para definir su comportamiento, porque es una herramienta flexible. En su forma más simple, rsync se puede decir que se asegura de que un archivo en una ubicación sea el mismo en una segunda ubicación en un sistema de archivos.

Ejemplo:

# rsync file1.txt file2.txt

Generalmente es deseable gastar rsync algunas configuraciones para asegurarse de que las cosas se comporten de la manera que un humano esperaría. Pasar parámetros como -a porque "archivar" es bastante común porque es un "metaparámetro" que invoca automáticamente a un puñado de otros para usted. el -a es equivalente a -rlptgoD, que se descompone en:

  • -r : Examinar directorios (en lugar de trabajar solo en archivos en el directorio actual)
  • -l : copiar enlaces simbólicos como nuevos enlaces simbólicos
  • -p : Conservar permisos
  • -t : Mantener los tiempos de modificación
  • -g : Preservar la propiedad del grupo
  • -o : Conservar la propiedad del usuario (que se limita solo a los superusuarios cuando se trata de archivos de otros usuarios)
  • -D : Copiar archivos del dispositivo

Muchas veces, esto funciona de la manera que el usuario quiere y no se necesitan cambios significativos. Sin embargo, algunos de ellos pueden ser contrarios a las necesidades del usuario, por lo que dividirlos en características específicas podría ser la respuesta correcta.

Otras opciones notables incluyen:

  • -n : Ejecute el comando en seco sin transferir archivos
  • --list-only : muestra solo la lista de archivos que rsync transferiría
  • -P : Mostrar progreso por archivo
  • -v : muestra el progreso general, produciendo información sobre cada archivo a medida que lo completa
  • -u : ignora la actualización de los archivos de destino si son más nuevos que la fuente
  • -q : Modo silencioso. Útil para incluir en scripts cuando no se requiere salida de terminal
  • -c : use un valor de suma de verificación para determinar qué archivos ignorar, en lugar de la hora y el tamaño de la modificación
  • --existing : actualice solo los archivos, pero no cree los nuevos que faltan
  • --files-from=FILE : Lea los archivos fuente de la lista desde un archivo de texto
  • --exclude=PATTERN : use PATRÓN para excluir archivos de la sincronización
  • --exclude-from=FILE : Igual que arriba, pero leído de un archivo
  • --include=PATTERN : también se usa para anular las reglas de exclusión
  • --include-from=FILE : Igual que arriba, pero leído de un archivo

Mi conjunto personal de configuraciones predeterminadas para rsync terminar siendo -avuP (registrar, salida detallada, actualizar solo archivos nuevos y ver el progreso del trabajo actual).

Índice

Origen y destinos

El origen y el destino de la sincronización son archivos y directorios. También, rsync proporciona la funcionalidad para interactuar con sistemas remotos a través de SSH, eliminando la necesidad de que el usuario configure recursos compartidos de red para poder sincronizar archivos de una ubicación a otra. Esto significa que puede escribir fácilmente rsync funciona después de configurar las claves SSH en ambos extremos, lo que elimina la necesidad de iniciar sesión manualmente para la sincronización remota de archivos.

Ejemplo:

Desglose la sintaxis aquí:

  • ejecutar el rsync pedido
  • Con el -avuP parámetros descritos anteriormente
  • Para copiar el directorio de Documentos local
  • Utilizando steve como usuario en el sistema remoto
  • Donde se llama el sistema remoto servidor de archivos y puede ser contactado por este nombre
  • Y la ruta relativa desde la casa de Steve se indica después de la : - y en este caso, eso significa ponerlo en el directorio de inicio del propio steve

Esto copia todo, desde la carpeta Documentos de Steve al directorio Documentos en el sistema remoto, actualizando solo los archivos que han cambiado o son nuevos. Ejecutarlo una vez es suficiente (hasta que haya nuevos cambios). Ejecutarlo de nuevo inmediatamente después debería producir relativamente la misma cantidad de salida pero ser mucho más rápido porque ignora todos los archivos.

Conclusión

Hay muchas maneras útiles de aprovechar el poder de rsync. A menudo, es tan simple como ejecutarlo desde la línea de comandos de forma ad hoc para copiar un montón de archivos sin preocuparse por perder el tiempo copiando elementos que ya existen en el destino. Escriba esto, agréguelo a cron y experimentar con diferentes configuraciones logra aún más objetivos para el administrador de sistemas promedio.

Artículos de interés

Subir