Sincronizar directorios con progreso

Sincronizar directorios en Linux con progreso: una guía completa

La sincronización de directorios en entornos Linux es una tarea frecuente para administradores de sistemas, desarrolladores y usuarios avanzados. Sea para respaldos, migraciones o disponibilidad redundante, disponer de una herramienta robusta y con visibilidad de progreso puede marcar la diferencia en productividad y fiabilidad.

1. ¿Por qué monitorizar el progreso

  • Transparencia: Saber cuántos archivos y bytes faltan por transferir.
  • Detección temprana de cuellos de botella: Identificar lentitud en disco o red.
  • Optimización de recursos: Ajustar tasa de transferencia y prioridades.

2. rsync: la herramienta por excelencia

El núcleo de casi cualquier truco de sincronización es rsync. Ofrece múltiples opciones para controlar qué copiar, cómo y con qué nivel de detalle del progreso.

Opción Descripción
-a Modo archivo (recursivo, mantiene permisos, tiempos).
–progress Muestra progreso por archivo.
–info=progress2 Visión global del progreso de todo el directorio.

Ejemplo básico:

rsync -az --info=progress2 /ruta/origen/ usuario@servidor:/ruta/destino/
  

3. Excluir ficheros y filtros avanzados

Para no copiar archivos temporales, grandes o específicos, rsync ofrece:

  • --exclude: patrones individuales.
  • --exclude-from=archivo.txt: varios patrones por línea.
  • --filter=merge patrón: reglas complejas de inclusión/exclusión.

4. Automatización con cron y systemd

Para sincronizaciones periódicas, lo más habitual es:

  1. Crear un script (/usr/local/bin/sync-backup.sh).
  2. Asignar permisos ejecutables (chmod x).
  3. Definir una tarea en cron (cron).

Alternativamente, con systemd timers se obtienen mejor logging y control de dependencias:

  • Archivo .service para ejecutar el script.
  • Archivo .timer para programar la ejecución.

5. Almacenamiento en tiempo real: lsyncd y Unison

Cuando se requiere replicación en caliente (live):

  • lsyncd: observa cambios locales y lanza rsync.
  • Unison: sincronización bidireccional y conflict resolution.

6. Sincronización segura sobre VPN

Para entornos inseguros o atravesar cortafuegos, encapsular el tráfico rsync en un túnel VPN otorga confidencialidad y estabilidad. Dos soluciones populares:

  • WireGuard: sencillo, de alto rendimiento y fácil configuración.
  • OpenVPN: madura, con amplio soporte de autenticación y cifrado.

Proceso básico:

  1. Configurar conexión VPN y verificar túnel.
  2. Ejecutar rsync hacia la IP interna asignada por la VPN.
  3. Utilizar -e ssh -T -c aes256-gcm@openssh.com para reforzar cifrado si no se usa VPN.

7. Casos prácticos y ejemplos avanzados

Escenario: sincronizar diariamente carpetas multimedia entre dos servidores:

#!/bin/bash
RSYNC_OPTS=-azh --delete --info=progress2 --exclude-from=/etc/rsync/excludes.txt
SOURCE=/media/videos/
DEST=backup@192.168.10.50:/mnt/backup/videos/
rsync RSYNC_OPTS SOURCE DEST
  

Programado con cron (0 3 ), de modo que a las 3 AM se ejecute de forma automática y envíe notificaciones por correo en caso de error.

Conclusiones y buenas prácticas

  • Planificación: entender volúmenes de datos y ventanas de mantenimiento.
  • Pruebas previas: validar con --dry-run.
  • Monitoreo: revisar logs y establecer alertas.
  • Seguridad: asegurar canal con VPN o cifrado SSH.
  • Documentación: archivar configuraciones y patrones de exclusión.

Con estas herramientas y métodos, sincronizar directorios en Linux con visibilidad de progreso será un proceso fiable, seguro y fácilmente automatizable.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *