GNU/Linux >> Tutoriales Linux >  >> Linux

Mantener los archivos y directorios de Linux sincronizados con rsync

Los administradores (o usuarios normales) a menudo necesitan hacer una copia de seguridad de los archivos o mantenerlos sincronizados entre varios lugares (incluidos los locales y remotos) 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 cualquier archivo nuevo/modificado/eliminado. Comprueba si existen archivos en el destino antes de enviarlos, ahorrando ancho de banda y tiempo para todo lo que omite. Además, rsync proporciona la capacidad 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, verificará 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 necesita o no transferir una nueva copia, lo que posiblemente ahorre mucho tiempo y ancho de banda.

[ También te pueden interesar:5 consejos avanzados de rsync para administradores de sistemas de Linux]

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

En la línea de comando, rsync generalmente se invoca usando un puñado de parámetros para definir cómo debe comportarse, ya que es una herramienta flexible. En su forma más simple, rsync se le puede decir que se asegure 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

Normalmente es deseable pasar rsync algunos parámetros para garantizar que las cosas se comporten de la forma en que un humano esperaría que lo hicieran. Pasar parámetros como -a para "archivo" es bastante común ya que es un "meta-parámetro" que invoca automáticamente a un puñado de otros para usted. El -a es equivalente a -rlptgoD , que se descompone en:

  • -r :recurse a través de 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 :Conservar los tiempos de modificación
  • -g :Preservar la propiedad del grupo
  • -o :preservar la propiedad del usuario (que está restringida solo a superusuarios cuando se trata de archivos de otros usuarios)
  • -D :Copiar archivos del dispositivo

A menudo, esto funciona como el usuario quiere y no se necesitan cambios significativos. Sin embargo, algunos de ellos pueden ser contrarios a lo que necesita un usuario, por lo que dividirlo en funciones específicas podría ser la respuesta correcta.

Otras opciones dignas de mención incluyen:

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

Mi conjunto personal predeterminado de parámetros para rsync termina siendo -avuP (archivar, salida detallada, actualizar solo archivos nuevos y mostrar el progreso del trabajo que se está realizando).

Fuente y destinos

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

Ejemplo:

Desglosando la sintaxis aquí:

  • Ejecutar rsync comando
  • Con el -avuP parámetros descritos anteriormente
  • Para copiar el directorio de Documentos local
  • Uso de steve como usuario en el sistema remoto
  • Donde el sistema remoto se llama servidor de archivos y puede ser contactado por ese nombre
  • Y la ruta relativa desde la casa de Steve se muestra después de : - y en este caso, significa poner esto en el propio directorio de inicio de steve

Esto copia todo, desde la carpeta Documentos de Steve hasta el directorio Documentos en el sistema remoto, y solo actualiza los archivos que han cambiado o son nuevos. Ejecutar esto 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 omite todos los archivos.

[ El manual del propietario de API:7 prácticas recomendadas para programas de API efectivos ] 

Resumir

Hay muchas formas útiles de aprovechar el poder de rsync . A menudo, es tan simple como ejecutarlo desde la línea de comandos de forma única para copiar un conjunto de archivos sin preocuparse por perder el tiempo copiando cosas que ya existen en el destino. Escribiendo esto, agregándolo a cron trabajos, y experimentar con diferentes parámetros ayuda a lograr aún más objetivos para el administrador de sistemas promedio.


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. Encuentra los archivos y directorios más grandes en Linux

  3. Linux:¿directorios estándar y/o comunes en sistemas operativos Unix/linux?

  4. ¿Sincronizar directorios en ambas direcciones con Rsync?

  5. Linux Eliminar archivos y directorios

Comando Ls en Linux (Lista de archivos y directorios)

Cómo excluir archivos y directorios con Rsync

Cómo comprimir archivos y directorios en Linux

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

Encuentre archivos y directorios en Linux fácilmente

Conceptos básicos de la línea de comandos de Linux:trabajar con archivos y directorios