Syncthing
# Syncthing

Syncthing es una aplicación de sincronización de archivos peer-to-peer libre y de código abierto disponible para Windows, macOS, Linux, Android, Solaris, Darwin y BSD. Puede sincronizar archivos entre dispositivos en una red local, o entre dispositivos remotos a través de Internet. La seguridad de los datos está integrada en el diseño del software.

## Tecnología

Syncthing está escrito en Go e implementa su propio protocolo de intercambio de bloques, igualmente libre, que permite generar una nube personal bajo el modelo BYO, donde los usuarios proporcionan el hardware y el software para la misma. Soporta IPv6 y, para los que están en redes IPv4, se ofrece perforación y retransmisión de NAT. Los dispositivos que se conectan entre sí requieren una aprobación explícita (a menos que se utilice la función de introducción), lo que aumenta la seguridad de la malla. Todos los datos, tanto los que se transfieren directamente entre dispositivos como los que se transmiten a través de relés, se cifran mediante TLS.

Los conflictos se gestionan renombrando el archivo más antiguo con un sufijo "sync-conflict" (junto con la marca de fecha y hora), lo que permite al usuario decidir cómo gestionar dos o más archivos con el mismo nombre que se han modificado entre las sincronizaciones. Los clientes de interfaz gráfica basados en este sistema pueden utilizar estos archivos para presentar al usuario un método de resolución de conflictos sin tener que recurrir a la gestión manual de los archivos.

La sincronización eficiente se logra mediante la compresión de metadatos o de todos los datos de transferencia, la reutilización de bloques y el escaneo ligero de archivos modificados, una vez que se ha calculado y guardado un hash completo. Syncthing ofrece tipos de carpetas de sólo envío y de sólo recepción en las que no se procesan las actualizaciones de los dispositivos remotos, varios tipos de versionado de archivos (papelera, versionado simple o escalonado, así como entrega de versionado a un programa o script externo) y patrones para ignorar archivos o rutas. Actualmente admite dos implementaciones diferentes de hashing SHA-256, la más rápida de las cuales se utilizará dinámicamente después de una breve evaluación comparativa en el arranque. El movimiento y el cambio de nombre de archivos y carpetas se maneja eficientemente, con Syncthing procesando inteligentemente estas operaciones en lugar de volver a descargar los datos desde cero.

