È stata rilasciata la versione 2.0 del sistema di sincronizzazione automatica dei file Syncthing, in cui i dati sincronizzati non vengono caricati su archivi cloud, ma vengono replicati direttamente tra i sistemi dell'utente quando sono contemporaneamente online, utilizzando il protocollo BEP (Block Exchange Protocol) sviluppato dal progetto. Il codice di Syncthing è scritto in Go e viene distribuito con la licenza aperta MPL. Le build pronte sono disponibili per Linux, Windows, macOS e FreeBSD.
Oltre a risolvere i problemi di sincronizzazione dei dati tra più dispositivi dello stesso utente, Syncthing consente di creare grandi reti decentralizzate per l'archiviazione di dati condivisi, distribuiti tra i sistemi dei partecipanti. Vengono forniti strumenti per il controllo degli accessi e la creazione di eccezioni per la sincronizzazione. È possibile definire host che riceveranno solo i dati, ovvero le modifiche apportate a questi host non si rifletteranno sulle istanze di dati conservate su altri sistemi. Sono supportati diversi modi di versioning dei file, in cui vengono mantenute versioni passate dei dati modificati.
Durante la sincronizzazione, il file viene logicamente suddiviso in blocchi, che sono indivisibili durante il trasferimento dei dati tra i sistemi dell'utente. Durante la sincronizzazione su un nuovo dispositivo, in caso di presenza di blocchi identici su più dispositivi, la copia dei blocchi avviene da nodi diversi, similmente al funzionamento del sistema BitTorrent. Più dispositivi partecipano alla sincronizzazione, più veloce sarà la replicazione dei nuovi dati grazie alla parallelizzazione. Nel processo di sincronizzazione dei file modificati, vengono trasferiti solo i blocchi di dati che sono stati cambiati, mentre in caso di rinominazione o modifica dei permessi, vengono sincronizzati solo i metadati.
I canali di trasmissione dei dati sono formati tramite TLS, tutti i nodi si autenticano tra loro tramite certificati e identificatori dei dispositivi, per il controllo dell'integrità viene utilizzato SHA-256. Per determinare i nodi di sincronizzazione nella rete locale può essere utilizzato il protocollo UPnP, che non richiede l'immissione manuale. indirizzi IP dispositivi sincronizzati. Per configurare il sistema e monitorare, è previsto un'interfaccia web integrata, un client CLI e una GUI basata sulla libreria GTK, che fornisce ulteriori strumenti per la gestione dei nodi di sincronizzazione e dei repository.
Modifiche chiave nella nuova versione:
- Il backend di archiviazione è stato migrato da LevelDB a SQLite. La migrazione dei dati avviene automaticamente al primo avvio dopo l'aggiornamento. Si prevede che l'uso di SQLite semplifichi la manutenzione e l'analisi dei dati e riduca anche il numero di errori.
- È stato modificato il formato della registrazione dei log, che ora vengono generati in formato strutturato (messaggio + parametri in formato chiave-valore). È stato introdotto un nuovo livello di log — WARNING, che è meno dettagliato rispetto a INFO, ma copre più informazioni rispetto a ERROR. È stata fornita la possibilità di assegnare diversi livelli di log a diversi pacchetti.
- È stata interrotta la conservazione permanente degli elementi rimossi nel database, tali elementi vengono ora eliminati dopo 6 mesi (il tempo può essere modificato tramite l'opzione "—db-delete-retention-interval").
- È stato migliorato il codice per l'analisi delle opzioni della riga di comando e interrotta la supporto per il formato obsoleto con un singolo trattino (ossia, al posto di "-home" è necessario specificare "—home"). Alcune opzioni sono state rinominate o convertite in sotto-comandi.
- È stata interrotta la creazione della cartella predefinita al primo avvio.
- È stata attivata l'installazione di più connessioni di rete tra i dispositivi che utilizzano Syncthing 2.x. Di default vengono create tre connessioni: una per i metadati dell'indice e due per lo scambio di dati.
- È stato modificato l'algoritmo di risoluzione dei conflitti in caso di cancellazione dei file.
- A causa delle difficoltà di cross-compilazione di SQLite, è stata interrotta la creazione di file eseguibili precompilati per le piattaforme dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm e windows/arm.
Fonte: opennet.ru
