# Syncthing

Syncthing és una aplicació gratuïta de sincronització de fitxers d'igual a punt de codi obert disponible per a Windows, macOS, Linux, Android, Solaris, Darwin i BSD. Pot sincronitzar fitxers entre dispositius d'una xarxa local o entre dispositius remots a través d'Internet. La seguretat de les dades i la seguretat de les dades estan integrades en el disseny del programari.

## Tecnologia

La sincronització està escrita a Go i implementa el seu propi protocol d'intercanvi de blocs igualment gratuït.
La sincronització és un model de núvol BYO on els usuaris proporcionen el maquinari en què s'executa el programari. Admet IPv6 i, per als que estan en xarxes IPv4, s'ofereixen perforacions i retransmissions NAT. Els dispositius que es connecten entre ells requereixen una aprovació explícita (tret que s'utilitzi la funció Introductor) que augmenta la seguretat de la malla. Totes les dades, tant si es transfereixen directament entre dispositius com mitjançant relés, es xifren mitjançant TLS.
Els conflictes es gestionen amb el canvi de nom del fitxer antic amb un sufix de "conflicte de sincronització" (juntament amb el segell de data i hora), que permet a l'usuari decidir com gestionar dos o més fitxers del mateix nom que s'han canviat entre sincronització. Els embolcalls de la GUI poden utilitzar aquests fitxers per presentar a l'usuari un mètode per resoldre conflictes sense haver de recórrer a la gestió manual de fitxers.
La sincronització eficient s'aconsegueix mitjançant la compressió de metadades o totes les dades de transferència, la reutilització de blocs i l'exploració lleugera dels fitxers modificats, un cop s'ha calculat i desat un hash complet. Syncthing ofereix tipus de carpetes només d'enviament i de recepció on no es processen les actualitzacions de dispositius remots, diversos tipus de versions de fitxers (paperera, versions simples o esglaonades, així com lliurament de versions a un programa o script extern) i patrons per ignorar rutes o fitxers. Actualment s'admeten dues implementacions de hash SHA256 diferents, la més ràpida de les quals s'utilitzarà de manera dinàmica després d'una breu referència a l'inici. El moviment i el canvi de nom dels fitxers i carpetes es gestiona de manera eficient, amb Syncthing processant aquestes operacions de manera intel·ligent en lloc de tornar a descarregar dades des de zero.

## Infraestructura

El descobriment de dispositius s'aconsegueix mitjançant servidors discovery accessibles al públic allotjats pels desenvolupadors del projecte, també podent-se configurar perquè treballi en mode local (LAN) mitjançant missatges de difusió, historial del dispositiu i nom/adreça d'amfitrió estàtic. El projecte també proporciona el programa Syncthing Discovery Server per allotjar els propis servidors discovery, que es poden utilitzar de suport o com a substitució dels servidors públics.
La xarxa de servidors de retransmissió aportats per la comunitat permet que els dispositius que estan darrere de diferents tallafocs NAT IPv4 es puguin comunicar mitjançant la retransmissió de dades xifrades a través d'un tercer. La retransmissió realitzada és de naturalesa similar al protocol TURN, amb el trànsit TLS xifrat d'extrem a extrem entre dispositius (per tant, fins i tot el servidor de retransmissió no pot veure les dades, només el flux xifrat). Els relés privats també es poden configurar, amb o sense relés públics, si es desitja. La sincronització canviarà automàticament de la retransmissió a les connexions directes de dispositiu a dispositiu si descobreix que hi ha disponible una connexió directa.
La sincronització es pot utilitzar sense cap connexió amb els servidors del projecte o de la comunitat: les actualitzacions, les dades d'ús d'activació, el descobriment i la retransmissió es poden desactivar o configurar de manera independent, de manera que la malla i la seva infraestructura es poden executar en un sistema tancat per a la privadesa o confidencialitat.

## Configuració i gestió

La sincronització s'ha de configurar mitjançant un navegador web de manera local o remota (i admet l'accés mitjançant un servidor intermediari), les API REST i Events o un dels programes d'embolcall aportats per la comunitat. També es proporcionen enllaços a imatges de Docker a la pàgina de contribucions de la comunitat, així com enllaços a solucions de gestió de configuració admeses com ara Puppet, Ansible i altres.

## Recepció

* A l'episodi 456 de SecurityNow!, l'amfitrió Steve Gibson va elogiar Syncthing com a possible substitut de codi obert per a BitTorrent Sync, i va tornar a fer-hi referència als episodis 603, 698, 727, i amb més detall als episodis 734 i 781.
* Un revisor de la revista en línia LWN escrigué "La sincronització deixa una impressió favorable. Sembla que els desenvolupadors han fet la feina per crear un sistema capaç, fiable, segur i que funcioni raonablement bé. Però també han fet la feina perquè sigui fàcil de configurar i utilitzar, el lloc on sembla que cauen molts projectes de programari lliure. És una eina atractiva per a qualsevol persona que vulgui prendre el control de les seves necessitats de sincronització i rèplica de dades".

## Història

Historial de versions de Syncthing :
| Data | Versió | Canvis importants |
| 01-10-2019 | 1.3.0 | Nou paràmetre per ajustar la mida de la base de dades Millor rendiment de la base de dades |
| 09-07-2019 | 1.2.0 | Nou protocol de transport (QUIC) Informe automàtic d'accidents |
| 09-05-2019 | 1.1.3 | Correcció ràpida per al llançament per solucionar un error de pànic a Windows |
| 2019-04-02 | 1.1.1 | Afegiu suport per a TLS1.3 |
| 22-04-2019 | 1.1.0 | La propietat d'usuari/grup segueix el directori principal Corregiu el rendiment del hash |
| 01-01-2019 | 1.0.0 | Limiteu el màxim d'exploracions simultànies Mostra el límit de fitxers canviats localment per rebre només carpetes |
| 19-06-2016 | 0.14 "Dysprosium Dragonfly" | nou protocol de sincronització extensible (la repetició completa del contingut de la carpeta es produirà el primer reinici) |
| 17-05-2016 | 0.13 "Copper Cockroach" | Doneu fitxers mentre els baixeu ID de carpeta únic separat de l'etiqueta |
| 05-11-2015 | 0.12 "Beryllium Bedbug" | Retransmissió de connexió Detecció de dispositius mitjançant HTTPS |
El llançament del binari públic inicial (v0.2) es va fer el 30 de desembre de 2013.
L'octubre de 2014, l'autor original va anunciar que Syncthing s'estava reanomenant "Pulse". Tanmateix, el 17 de novembre, el desenvolupador va decidir no canviar Syncthing a Pulse i ja no treballa amb ind.ie. Ind.ie's Pulse és ara una bifurcació oficialment aprovada de Syncthing.
El 22 d'abril de 2015, es va publicar la 0.11.0 i va introduir la gestió de conflictes, la selecció d'idioma a la interfície d'usuari, l'ús de la CPU i millores de velocitat de sincronització, suport de noms de fitxer llargs a Windows, reinici automàtic quan hi ha un problema, per exemple, la unitat no és accessible i suport per a programari de versions extern. 0.11 no és compatible amb versions anteriors de Syncthing. A causa dels canvis als clients de sincronització de l'API REST que estaven a 0.10.x no s'actualitzarien automàticament a 0.11, ja que no era compatible amb moltes integracions de tercers en el moment del seu llançament.
La 0.13.0, com moltes de les versions anteriors de Syncthing, és incompatible amb els clients que executen la versió 0.12.x i posteriors. 0.13.x separa els identificadors de carpeta de les etiquetes de carpeta. Ara també té la capacitat de servir parts del fitxer que ja s'han baixat a altres clients mentre encara s'està baixant.
1.0.0, amb el nom en clau Erbium Earthworm, realment no va aportar cap canvi important a la taula. Va ser més aviat una reflexió dels desenvolupadors sobre l'ús generalitzat del programa i el fet que ja portava gairebé 5 anys en desenvolupament en aquell moment. Malgrat el canvi en el nombre principal, Jakob Borg, el desenvolupador principal, va declarar que era idèntic a 0.14.55-rc.2
Al costat de la versió 1.0.0, l'equip va introduir un nou sistema de versions semblant a semver amb els criteris següents:
* Una nova versió que sigui protocol incompatible amb l'anterior es constituiria com a versió principal.
* Una versió nova que tingui canvis a l'API REST o tingui canvis a la base de dades o a la configuració que no permetrien baixar a una versió anterior constituiria una versió menor.
* Si no hi ha cap preocupació específica com l'anterior, es tracta d'una nova versió del pedaç.
A la 1.1.0 la sincronització va adoptar Go 1.12 i com a tal perd la compatibilitat amb Windows XP i Windows Server 2003
1.2.0 introdueix suport per a QUIC, i ara pot elaborar informes automàtics d'error i obsolescència de blocs petits/fixos. 1.2.0 també va deixar de suportar la comunicació amb clients de Syncthing que funcionen amb 0.14.45 o anterior.
1.8.0 afegeix una opció de carpeta experimental que permet als usuaris especificar com s'han de desar els canvis de fitxer en sistemes de fitxers de còpia en escriptura i també afegeix suport de perforació TCP.
1.9.0 va introduir l'opció caseSensitiveFS que permetia als usuaris desactivar el maneig recentment afegit per als sistemes de fitxers sense distinció de majúscules i minúscules.
La versió 1.10.0 va donar als usuaris la possibilitat de canviar si voldrien que les IP LAN s'emetessin a la xarxa de descobriment global.

## Referències

* ↑ Wallen, Jack. «Let Syncthing turn your desktop into a local cloud for your mobile device». TechRepublic. CBS Interactive, 05-01-2016.
* ↑ «Block Exchange Protocol v1». [Consulta: 7 abril 2016].
* ↑ «Security Principles — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Relaying — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «FAQ — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «FAQ — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Understanding Synchronization — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Understanding Synchronization — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Folder Types». [Consulta: 9 juliol 2020].
* ↑ «File Versioning — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Ignoring Files — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «cmd/syncthing: Add selectable sha256 package (fixes #3613, fixes #3614)». Github.com, 22-09-2016. [Consulta: 4 gener 2017].
* ↑ «FAQ — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Understanding Device IDs — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Syncthing Discovery Server — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Relaying — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Security Principles — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Community Contributions — Syncthing v0.14 documentation». Docs.syncthing.net. [Consulta: 4 gener 2017].
* ↑ «Security Now! Episode 456». Grc.com. [Consulta: 4 novembre 2014].
* ↑ «Security Now! Episode 603». Grc.com. [Consulta: 7 febrer 2019].
* ↑ «Security Now! Episode 698». Grc.com. [Consulta: 7 febrer 2019].
* ↑ «Security Now! Episode 727». Grc.com. [Consulta: 14 agost 2019].
* ↑ «Security Now! Episode 734 on YouTube». YouTube.com. [Consulta: 3 octubre 2019].
* ↑ «Security Now! Episode 781 on YouTube». YouTube.com. [Consulta: 1r setembre 2020].
* ↑ «Syncing all the things». [Consulta: 7 setembre 2021].
* ↑ v1.3.0, The Syncthing Project, 2019-10-01, <https://github.com/syncthing/syncthing/releases/tag/v1.3.0>
* ↑ v1.2.0, The Syncthing Project, 2019-07-09, <https://github.com/syncthing/syncthing/releases/tag/v1.2.0>
* ↑ v1.1.3, The Syncthing Project, 2019-05-31, <https://github.com/syncthing/syncthing/releases/tag/v1.1.3>
* ↑ v1.1.1, 2019-05-31, <https://github.com/syncthing/syncthing/releases/tag/v1.1.1>
* ↑ v1.1.0, 2019-05-31, <https://github.com/syncthing/syncthing/releases/tag/v1.1.0>
* ↑ v1.0.0, 2019-05-31, <https://github.com/syncthing/syncthing/releases/tag/v1.0.0>
* ↑ «0.14». Github.com, 19-06-2016.
* ↑ «0.13». Github.com, 17-05-2016.
* ↑ «0.12», 14-04-2016.
* ↑ «Releases», 30-12-2013.
* ↑ Borg, Jakob. «Introducing Pulse, and ind.ie», 09-10-2014. [Consulta: 7 abril 2016].
* ↑ Borg, Jakob. «Syncthing is still Syncthing», 17-11-2014. [Consulta: 7 abril 2016].
* 1 2 3 «Syncthing v0.11.0 Release Notes». Syncthing Community Forum, 14-04-2015. [Consulta: 15 octubre 2020].
* ↑ «Release v0.13.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* 1 2 «Syncthing graduation day». Syncthing Community Forum, 01-01-2019. [Consulta: 15 octubre 2020].
* ↑ «Release v1.0.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* ↑ «Syncthing 1.0.0 released as open-source P2P sync tool, finally leaves beta» (en anglès). BetaNews, 03-01-2019. [Consulta: 15 octubre 2020].
* ↑ «Versions & Releases — Syncthing v1 documentation». docs.syncthing.net. [Consulta: 15 octubre 2020].
* ↑ «Release v1.1.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* ↑ «Release v1.2.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* ↑ «Release v1.8.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* ↑ «Release v1.9.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].
* ↑ «Release v1.10.0 · syncthing/syncthing» (en anglès). GitHub. [Consulta: 15 octubre 2020].

## Enllaços externs

* Syncthing - Lloc web oficial