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:
- Crear un script (
/usr/local/bin/sync-backup.sh
). - Asignar permisos ejecutables (
chmod x
). - 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:
- Configurar conexión VPN y verificar túnel.
- Ejecutar rsync hacia la IP interna asignada por la VPN.
- 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.
Leave a Reply