Der er blevet præsenteret en release af det automatiske filsynkroniseringssystem Syncthing 2.0, hvor de synkroniserede data ikke uploades til cloud-lagringspladser, men direkte replikeres mellem brugernes systemer, når de samtidig er online ved hjælp af den udviklede protokol BEP (Block Exchange Protocol). Koden til Syncthing er skrevet i Go og distribueres under den frie MPL-licens. Færdige builds er forberedt til Linux, Windows, macOS og FreeBSD.
Udover at løse opgaver med datasykronisering mellem flere enheder af en enkelt bruger, muliggør Syncthing oprettelsen af store decentrale netværk til opbevaring af fælles data, der er fordelt mellem deltagernes systemer. Der tilbydes værktøjer til adgangskontrol og oprettelse af undtagelser for synkroniseringen. Det er muligt at definere værter, der kun modtager data, hvilket betyder, at ændringer af data på disse værter ikke vil blive reflekteret i de datainstancer, der opbevares på andre systemer. Flere versioneringsmetoder for filer understøttes, hvilket bevarer tidligere versioner af ændrede data.
Ved synkronisering opdeles filen logisk i blokke, som ikke er delbare under dataoverførslerne mellem brugernes systemer. Ved synkronisering til en ny enhed, hvis der findes identiske blokke på flere enheder, foretages kopiering af blokke fra forskellige noder, ligesom det fungerer i BitTorrent-systemet. Jo flere enheder der deltager i synkroniseringen, jo hurtigere vil replikationen af nye data foregå takket være paralleliseringen. Under synkroniseringen af ændrede filer overføres kun de ændrede datablokke over netværket, mens kun metadata synkroniseres ved omdøbning eller ændring af adgangsrettigheder.
Dataoverførselskanaler dannes ved hjælp af TLS, alle noder autentificerer hinanden via certifikater og enhedsidentiteter, og SHA-256 anvendes til integritetskontrol. UPnP-protokollen kan bruges til at identificere synkroniseringsnoder i det lokale netværk, hvilket eliminerer behovet for manuel indtastning. IP-adresser synkroniserede enheder. For at konfigurere systemet og overvåge det er der indbygget et web-interface, en CLI-klient og en GUI baseret på GTK-biblioteket, hvor der desuden tilbydes værktøjer til at styre synkroniseringsnoder og repositorier.
Nøgleændringer i den nye version:
- Backend-lagring er blevet flyttet fra LevelDB til SQLite. Data migreres automatisk ved første opstart efter opdateringen. Det forventes, at brugen af SQLite vil forenkle vedligeholdelse og analyse af data samt reducere antallet af fejl.
- Logformatet er ændret, så loggene nu dannes i en struktureret form (besked + parametre i nøgle-værdi-format). Et nyt logniveau — WARNING — er blevet tilføjet, som ikke er så detaljeret som INFO, men dækker mere information sammenlignet med ERROR-niveauet. Det er nu muligt at tildele forskellige logniveauer til forskellige pakker.
- Den evige opbevaring af slettede elementer i databasen er stoppet; sådanne elementer slettes nu efter 6 måneder (tiden kan ændres via indstillingen «—db-delete-retention-interval».
- Koden til at fortolke kommandolinjeindstillinger er blevet forbedret, og understøttelsen af det forældede format med ét bindestreg er stoppet (dvs. i stedet for «-home» skal du angive «—home»). Nogle indstillinger er blevet omdøbt eller er blevet til underkommandoer.
- Oprettelsen af en standardmappe ved første opstart er stoppet.
- Der er taget højde for oprettelsen af flere netværksforbindelser mellem enheder, der bruger Syncthing 2.x. Som standard oprettes der tre forbindelser — én til metadataindekset og to til dataudveksling.
- Algoritmen til konfliktløsning ved sletning af filer er blevet ændret.
- På grund af udfordringer ved krydskompilering af SQLite er opbygningen af færdige eksekverbare filer for platforme som dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm og windows/arm stoppet.
Kilde: opennet.ru
