Syncthing vs rsync vs Unison: sincronización bidireccional entre VPS

Por · Publicado el · 9 min de lectura

Hombre y mujer en una oficina mirando la pantalla de un portátil; uno sostiene otro portátil cerrado
Equipo evaluando soluciones y sincronización entre servidores VPS Foto: Mikhail Nilov / Pexels

Comparativa: Syncthing vs rsync vs Unison para sincronización bidireccional entre servidores VPS. Aquí verás cuándo conviene cada herramienta, cómo manejan conflictos, rendimiento, seguridad y automatización. Incluye criterios objetivos por escenario y un guion de pruebas simples para validar en tu entorno antes de estandarizar la solución.

Cuándo es necesaria la sincronización bidireccional entre VPS

La sincronización bidireccional es útil cuando dos servidores pueden recibir cambios y se busca convergencia automática sin sobrescribir datos. Ejemplos típicos: edición colaborativa de archivos, nodos activos con contenido compartido o entornos de staging y producción que intercambian datos controlados.

Si únicamente necesitas una copia en una dirección (backup, mirror), la sincronización unidireccional suele ser más sencilla y segura. Para bidireccional, los conflictos y borrados exigen reglas claras y herramientas que detecten cambios correctamente.

Una política de exclusión y retención bien definida reduce el riesgo. Combínala con verificaciones periódicas por muestreo para detectar desviaciones con rapidez.

  • Entorno activo‑activo con contenido mutable en ambos lados
  • Sincronización continua de directorios de trabajo entre VPS
  • Migración progresiva entre servidores con ida y vuelta temporal
  • Clusters sin storage compartido, con consistencia eventual

Visión general: Syncthing, rsync y Unison en 1 minuto

Syncthing es P2P, bidireccional por defecto, con descubrimiento, cifrado de extremo a extremo y detección de renombrados y bloques modificados. Trabaja continuamente y maneja bien NAT mediante relays e introducers.

rsync es unidireccional. Para bidireccional requiere orquestación en ambos sentidos y lógica adicional para conflictos. Destaca en mirrors y jobs programados, con filtros potentes y transferencia delta.

Unison ofrece sincronización verdadera de dos vías sobre SSH, con perfiles declarativos, detección de conflictos y renombrados. Opera por lotes o de forma interactiva, útil cuando se quiere control explícito de la convergencia.

Tabla comparativa de recursos y limitaciones

Compara rápidamente criterios que suelen pesar en la elección. Úsala como checklist para tu caso. Ajusta filtros/ignores y la topología antes de medir rendimiento.

Criterio Syncthing rsync Unison
Modelo de sincronización Bidireccional continuo (near real-time) Unidireccional por ejecución; bidireccional solo con orquestación Bidireccional por diseño (lotes)
Transporte Conexión directa, relays; TLS E2E Generalmente sobre SSH (o daemon rsyncd) SSH nativo (o socket local)
Detección de cambios Inotify + escaneo periódico Stat/mtime + checksums bajo demanda Registro de estado + escaneo eficiente
Renombrados/moves Detecta y reaprovecha bloques Trata como delete+add en la mayoría de los casos Detecta moves/renames
Conflictos Versiones/archivos en conflicto opcionales Sin resolución nativa (la última escritura puede ganar) Marca conflictos y solicita/aplica reglas
Cifrado en tránsito TLS con device IDs Vía SSH (cuando se usa) Vía SSH
Funcionamiento detrás de NAT Funciona con relays/UPnP Depende de acceso SSH/puerta expuesta Depende de acceso SSH/puerta expuesta
Agendamiento Continuo por defecto Agendado via cron/systemd timers Ejecución bajo demanda o agendada
Granularidad delta Bloques (streaming) Delta por bloques eficiente Delta por bloques entre réplicas
Escalabilidad (n nodos) Varios pares; topología P2P Uno-a-muchos con scripts Pares definidos; puede escalar con perfiles
Visibilidad/GUI GUI y API nativas Línea de comando; existen wrappers Línea de comando; interfaces de terceros
Filtro/ignore Patrones .stignore por carpeta Include/exclude potentes Patterns en perfiles
Uso típico Sync continuo con cambios en ambos lados Deploys, mirrors, backups incrementales Bidireccional controlado y declarativo

Rendimiento y consumo: lo que realmente importa

El rendimiento depende más del patrón de cambios y de la red que de la herramienta. Muchos archivos pequeños penalizan el escaneo y la latencia. Archivos grandes favorecen protocolos con delta por bloque.

CPU y disco influyen al calcular checksums y leer bloques. En redes de alta latencia, la compresión y el pipeline de bloques ayudan. En enlaces limitados, limitar la banda evita competir con tráfico de producción.

rsync permite ajustes finos (compresión, delta, inplace, partial). Syncthing equilibra escaneo continuo y hashing para minimizar reenvíos de bloques. Unison trabaja por perfiles, útil para aislar subárboles ruidosos.

Para cargas intensas, considera programar ventanas fuera de horario crítico y monitorizar I/O de disco para no interferir con bases de datos y colas.

  • Optimiza directorios ruidosos con ignores para reducir el escaneo
  • Agrupa pequeñas modificaciones en ventanas cortas cuando sea posible
  • Evita sincronizar archivos temporales y caches (node_modules, .cache, tmp)
  • Sigue CPU/IO para no competir con workloads críticos

Seguridad y conectividad entre servidores

Para tráfico seguro, rsync y Unison suelen usar SSH, heredando llaves, políticas y logs. Syncthing cifra extremo a extremo y autentica por IDs de dispositivo, sin exigir SSH.

Detrás de firewalls, el acceso SSH simplifica rsync/Unison. Syncthing conecta vía relays cuando no hay ruta directa. Controla puertos y políticas con el firewall y registra accesos. Consulta la guía práctica de firewall en configurar firewall en Ubuntu con UFW.

Si necesitas acceso seguro entre redes, una VPN site‑to‑site evita exponer puertos públicamente y estabiliza la latencia. Hay un paso a paso en WireGuard site‑to‑site entre dos VPS Debian.

Para administración centralizada de conexiones SSH, un jump host ayuda a estandarizar políticas y auditoría. Mira Cómo configurar un bastión SSH en Ubuntu 22.04.

  • Restringe puertos con reglas claras de entrada y salida
  • Exige llaves SSH y rotación periódica cuando aplique
  • Evalúa VPN site‑to‑site para tráfico interno de sincronización

Automatización, observabilidad y operaciones

En operaciones, la previsibilidad importa. rsync destaca con agendamiento via timers, logs y códigos de salida simples de integrar. Unison también puede correr en jobs y registrar conflictos para revisión.

Syncthing expone GUI y API para observar pares, colas y eventos. Monitoriza consumo y fallos, y trata conflictos con versionado cuando hay ediciones simultáneas.

Centraliza logs y métricas para detectar caídas de conexión, directorios fuera de patrón y crecimiento anómalo de colas. Una stack de logs ayuda, como en Fluentd y Elasticsearch: logs PHP en VPS (guía), y métricas/alertas con Prometheus y Grafana con Docker Compose en VPS.

  • Usa systemd timers para ventanas de sincronización controladas
  • Monitoriza latencia, throughput y backlog de archivos
  • Versiona conflictos en directorios separados para auditoría

Elección por escenario: recomendaciones prácticas

Las elecciones dependen de quién modifica, cuándo lo hace y de los requisitos operativos. Usa estos criterios para reducir riesgo y esfuerzo. Si hay fuerte exigencia de auditoría y ventanas definidas, prefiere modos por lotes; para colaboración continua, favorece P2P.

  • Near real‑time, dos lados editando y NAT en el camino: Syncthing
  • Mirror controlado con filtros fuertes y auditoría por job: rsync (unidireccional)
  • Bidireccional bajo control, con revisión de conflictos: Unison
  • Deploys y distribución de artefactos: rsync
  • Entornos con muchos renames/moves: Syncthing o Unison (detección nativa)
  • Enlaces inestables con reanudación y delta: cualquiera con delta por bloques; valida en tu tráfico

Cómo probar en tu entorno (sin suposiciones)

Antes de estandarizar, haz una prueba corta y representativa. Monta un dataset realista, ejecuta una primera sincronización y luego aplica: algunos renombrados, ediciones pequeñas en archivos grandes y creación/eliminación de muchos archivos pequeños. Mide tiempo total, uso de CPU/IO y provoca un conflicto a propósito.

Evita números absolutos y céntrate en comparativos en el mismo host/enlace. Documenta flags, filtros y ventanas usados para repetir la prueba después de cambios en la infraestructura. Si es posible, prueba bajo limitación de banda para observar reintentos y comportamiento delta.

Este guion confirma, de forma objetiva, lo que esta comparativa anticipa —pero valida siempre con tus datos y patrones de cambio.

  • Crea perfiles/filtros para excluir temporales y caches
  • Mide tres rondas: inicial, incremental ligera e incremental pesada
  • Simula conflicto editando simultáneamente el mismo archivo
  • Testea bajo limitación de banda para observar comportamiento

Preguntas frecuentes

¿Se puede hacer sincronización bidireccional solo con rsync?

Técnicamente es posible orquestar dos flujos rsync y añadir lógica para resolver conflictos, pero es arriesgado. rsync no detecta renombrados de forma nativa y la “última escritura gana” puede provocar pérdida de datos. Para bidireccional real, evalúa Syncthing o Unison.

¿Syncthing es adecuado para servidores críticos en producción?

Puede serlo, siempre que implementes gobernanza: versionado de conflictos, directorios bien filtrados y observabilidad. Ejecútalo como servicio, limita recursos y valida el impacto del escaneo en horas punta. En entornos regulados, documenta políticas de exclusión y retención.

¿Unison sigue siendo una opción válida hoy en día?

Sí, para sincronización bidireccional declarativa y controlada. Detecta conflictos y renombrados, funciona bien sobre SSH y permite perfiles reproducibles. Es práctico cuando prefieres rondas de sincronización con revisión en lugar de flujo continuo.

¿Cómo evitar perder datos en conflictos de sincronización?

Define reglas: versionado de conflictos en un directorio separado, ventanas de actualización, bloqueo de tipos de archivo sensibles y exclusiones protegidas. En bidireccional, prueba escenarios de edición simultánea y documenta el procedimiento de resolución antes de pasar a producción.

¿Cómo monitorizar si la sincronización está funcionando?

Recoge logs y códigos de salida de jobs (rsync/Unison) y métricas/estado de la cola (Syncthing). Centraliza en una stack de observabilidad y configura alertas para fallos repetidos, backlog creciente y caídas de conexión. Auditorías por muestreo ayudan a detectar drift.

¿Quieres decidir con seguridad?

Si necesitas diseñar, validar y automatizar sincronización entre VPS con bajo riesgo de conflictos, podemos conversar sobre escenarios y pruebas prácticas.

Hablar sobre tu caso

Ver también