Tutvustatakse failide automaatse sünkroonimise süsteemi Syncthing 2.0, kus sünkroonitud andmeid ei laadita pilveteenustesse, vaid need replikiseeruvad otse kasutaja süsteemide vahel nende samal ajal online oleku ajal, kasutades projekti poolt arendatavat BEP (Block Exchange Protocol) protokolli. Syncthingi kood on kirjutatud Go keeles ja see on vabalt distributeeritav MPL litsentsi alusel. Valmisversioonid on ette valmistatud Linuxi, Windowsi, macOS-i ja FreeBSD jaoks.
Lisaks andmete sünkroonimise küsimuste lahendamisele mitme seadme vahel võib Syncthing võimaldada ka suurte detsentraliseeritud võrkude loomist, et salvestada ka ühiselt kasutatavaid andmeid, mis on jagatud osalejate süsteemide vahel. On tagatud juurdepääsu kontroll ja sünkroonimise erandid. Saadaval on hostide määramine, mis saavad andmeid ainult vastu võtta, st andmete muutmine nendel hostidel ei kajastu teiste süsteemide salvestatud andmetes. Toetatakse mitmeid failide versioonimise režiime, mille korral säilitatakse varem muudetud andmete versioonid.
Sünkroniseerimise käigus jagatakse fail loogiliselt plokkideks, mis on edastamise ajal süsteemide vahel jagamatud. Uue seadmega sünkroniseerimise korral, kui mitmel seadmel on identsed plokid, kopeeritakse plokid erinevatest sõlmedest, sarnaselt BitTorrent'i süsteemile. Mida rohkem seadmeid osaleb sünkroniseerimises, seda kiiremini toimub uute andmete replikatsioon, tänu paralliseerimisele. Muudetud failide sünkroniseerimise protsessis edastatakse üle võrgu ainult muudetud andmeplokid, ning failinime muutmisel või juurdepääsuõiguste muutmisel sünkroniseeritakse ainult metaandmed.
Andmeedastuskanalid luuakse TLS-i abil, kõik sõlmed autentivad üksteist sertifikaatide ja seadmeidentifikaatorite kaudu, andmeintegriteedi tagamiseks kasutatakse SHA-256. Sünkroniseerimissõlmede määramiseks koduvõrgus võib kasutada protokolli UPnP, mille puhul ei ole käsitsi sisestamine vajalik. IP-aadresse sünkroniseeritavad seadmed. Süsteemi seadistamiseks ja jälgimiseks on saadaval integreeritud veebiliides, CLI-kliendi ja GUI GTK-kogumil, mis pakub lisaks sünkroniseerimise ja repositorite haldamise vahendeid.
Uue haru peamised muudatused:
- Selle ajakohastamisel on andmebaasi tasemelt LevelDB ülemineku tõttu impressum SQLite. Andmete migreerimine toimub automaatselt esmakordsel käivitamisel pärast uuendamist. Eeldatakse, et SQLite kasutamine lihtsustab andmete hooldust ja analüüsi ning vähendab vigade arvu.
- Logide vormingut on muudetud, need genereeritakse nüüd struktureeritud kujul (sõnum + parameetrid võtmeta väärtuse formaadis). Uus logide tase — WARNING — on vähem detailne kui INFO, kuid katab rohkem teavet võrreldes ERROR tasemega. Erinevatele paketidele on antud võimalus määrata erinevad logi tasemed.
- Kustutatud elementide igavese säilitamise lõpetamine andmebaasis, sarnased elemendid eemaldatakse nüüd 6 kuu pärast (aega saab muuta valiku „—db-delete-retention-interval“ kaudu).
- Kood, mis käsitleb käsurea valikute tõlgendamist, on parendatud ja toetab enam ei vananenud vormingut ühe sidekriipsuga (nt «-home» asemel tuleb kasutada «—home»). Mõned valikud on ümber nimetatud või muudetud alamkäskudeks.
- Esimese käivitamise ajal ei luleta enam vaikimisi katalooge.
- Kasutatakse mitme võrgusisese ühenduse loomist seadmete vahel, mis kasutavad Syncthing 2.x. Vaikimisi luuakse kolm ühendust - üks metaandmete indekseerimiseks ja kaks andmete vahetamiseks.
- Muudetud konfliktide lahendamise algoritmi failide kustutamise olukordades.
- SQLite ristkompileerimise keerukuste tõttu on lõpetatud valmistehtud käivitatavate failide koostamine platvormidele dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm ja windows/arm.
Allikas: opennet.ru
