47 - Sincronización de dispositivos en la nube
¿como haces la sincronización de dispositivos en la nube?¿utilizas una nube pública?¿o prefieres sincronizar tus datos sensibles mediante con Syncthing?
En el episodio número 45 del podcast sobre gestionar contraseñas, comenté que la sincronización, de la base de datos de contraseñas, la estaba haciendo con Syncthing. Sin embargo, mientras grababa el podcast, caí en la cuenta, que hasta el momento no te había hablado, sobre esta impresionante herramienta. Si bien, le he dedicado algún artículo en el blog, creo, que Syncthing tiene suficiente entidad, en mi vida digital, como para dedicarle también un episodio del podcast. Para mi es una herramienta de sincronización de dispositivos fundamental.
Y tu ¿como haces la sincronización de dispositivos en la nube?¿utilizas una nube pública?¿o prefieres sincronizar tus datos sensibles mediante una solución tan increíble como Syncthing?
Sincronización de dispositivos en la nube
En este nuevo episodio del podcast, te voy a hablar precisamente de sincronización de dispositivos en la nube, pero sin tener que compartir los archivos con terceros. Es decir, sin tener que utilizar servicios con Google Drive, Dropbox, etc…. si no a través de Syncthing
Antes de meternos en faena…
Si estás en Valencia o alrededores, este próximo fin de semana tienes eventos que seguro te interesan.
- Taller de creación de bots para Telegram
Syncthing
Vaya por delante que no estoy en contra de ningún servicio público de almacenamiento en la nube. Al fin y al cabo, estas empresas son las que han abierto el melón de la nube al usuario final. No solo esto, sino que la fiabilidad que hoy te ofrecen estos servicios públicos, es muy complicado que lo consigas tu.
Así en el caso de que tengas un NAS propio, o en varios NAS, incluso con sistemas RAID, backup, etc… sigue siendo muy complicado que llegues al nivel que te ofrecen las nubes públicas. No te engañes, esto es así.
Sin embargo, si lo único que quieres es tener tus diferentes dispositivos sincronizados, ¿es necesario tener un sistema de almacenamiento en la nube?.
¿Que es Syncthing?
Syncthing es un servicio que reemplaza a los sistemas propietarios de almacenamiento en la nube, con un sistema abierto, confiable y descentralizado.
Seguro y privado
- Un servicio privado, porque nada de tus documentos, archivos o información se guardan en ningún otro sitio que no sea tu ordenador, móvil o dispositivo que tu utilices. No existen servidores centrales susceptibles de sufrir un ataque. La información solo está en tus equipos.
- Toda la comunicación está securizada utilizando TLS.
- Cada uno de los nodos está identificado utilizando un certificado con cifrado. Solo los nodos que tu permitas podrán conectarse a tu clúster.
Instalación
Syncthing es una aplicación multiplataforma con una potente comunidad, lo que permite que existen diferentes clientes gráficos. Clientes gráficos que te facilitará la gestión de Syncthing, partiendo de que no es nada complicado su uso.
En mi caso particular dado que utilizo GNOME Shell, existe una sencilla extensión Syncthing GNOME Shell extension. Pero, dado que es Software Libre
Me va muy lento ¿Que pasa?
Si la sincronización de repente te va muy lenta, puedes realizar una serie de comprobaciones para determinar cual puede ser el problema.
Lo primero que tienes que hacer es verificar si tienes conexión directa, en el caso de que no tengas conexión directa, debes revisar la configuración del cortafuegos.
La segunda de las comprobaciones que deberías realizar es ver el uso que estás haciendo de CPU. Esto lo puedes comprobar en la interfaz gráfica. Así si el valor es de un 100% o próximo, indica que estás limitado por la velocidad del CPU.
La última de las comprobaciones a realizar, es que la conexión es correcta.
¿Por que consume tanta CPU?
Cuando Syncthing encuentra un archivo tiene que calcular su hash vía SHA-256.
Para enviar un archivo este es comprimido y cifrado. Mientras que para recibirlo tiene que descifrar y descomprimir el archivo. Mientras que la operación de comprimir y descomprimir es algo opcional, el caso del cifrado y descifrado se realiza siempre, por motivos evidentes de seguridad.
Se realizan diferentes operaciones internas para hacer un seguimiento de la versión en curso de cada uno de los archivos y de las diferentes versiones.
Por defecto, Syncthing realiza operaciones periódicas de escaneo para detectar cambios en archivos. Esto implica comprobar cada uno de los archivos.
Para minimizar el impacto, Syncthing intentará reducir la prioridad de los diferentes procesos.
Es posible limitar la cantidad de CPU utilizada en los procesos de sincronizado y escaneo. Para ello se puede moficiar la variable GOMAXPROCS
que establece el número máximo de núcleos de CPU.
Conflictos
Syncthing es capaz de reconocer conflicos, durante la sincronización de dispositivos. Así, cuando un archivo es modificado en dos dispositivos de forma simultánea, y el contenido difiere de un dispositivo a otro, uno de los dos es renombrado.
Sin embargo, este nuevo archivo es tratado como un archivo normal, en tanto en cuanto, que es sincronizado en todos tus dispositivos.
¿Como servir un directorio en un sistema de archivos de solo lectura?
Syncthing necesita crear un directorio para indicar que el directorio está presente y es correcto. Por defecto este directorio se llama .stfolder
que es creado por Syncthing cuando el directorio se añade.
Compartir un directorio dentro de otro directorio compartido
Actualmente, en la sincronización de dispositivos, no es posible compartir un directorio dentro de otro directorio compartido.
Como renombrar o mover un directorio sincronizado
El renombrado de archivos en la sincroniación de dispositivos no está soportado, y te puede llevar a perder su contenido. Por esta razón, es recomendable es quitar la sincronización, a continuación renombrar o mover, y por último volver a añadir para sincronizar.
Sincronización entre directorios de la misma máquina
Syncthing no está diseñado para la sincronización locales para esto te recomiendo que utilices rsync
, que te va a dar mucha funcionalidad. Es decir no te permite sincronizar un directorio de un dispositivo con ese mismo dispositivo.
Ignorar archivos de la sincronización
Syncthing te da la posibilidad de ignorar archivos de la sincronización. Para ello tienes que hacer uso de un archivo llamado .stignore. De esta forma puedes realizar sincronización de dispositivos seleccionando que quieres sincronizar mediante patrones, lo que te da una gran versatilidad y funcionalidad de uso.
Quiero saber que costo tiene, antes de utilizar este servicio en la nube.
Gracias muy amable