Syncthing vs rsync vs Unison: sincronización bidireccional entre VPS
Por Kevin Marcondes · Publicado el · 9 min de lectura
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 casoVer también
- Comparativo: ZFS vs LVM+LUKS en VPS con bases de datos — snapshots, rendimiento y recuperación tras fallos
- Análisis práctico — comparativa: Nginx Unit vs PHP‑FPM vs RoadRunner para ejecutar monolitos PHP en contenedores — latencia, throughput y consumo de memoria
- Comparativa: Flyway vs Liquibase vs Sqitch para versionado de base de datos en proyectos PHP/Laravel
- Comparativa: ZFS vs Btrfs para snapshots, replicación y retención incremental en VPS con contenedores Docker — pros y contras prácticos