È stato rilasciato Syncthing 2.0, un sistema di sincronizzazione automatica dei file 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 distribuito con licenza MPL. Le build sono disponibili per Linux, Windows, macOS e FreeBSD.
Oltre a risolvere le problematiche di sincronizzazione dei dati tra più dispositivi dello stesso utente, Syncthing consente anche di creare grandi reti decentralizzate per il consumo condiviso di dati, distribuiti sui sistemi dei partecipanti. Sono forniti strumenti per il controllo degli accessi e la creazione di eccezioni per la sincronizzazione. È possibile definire host che possono solo ricevere dati, cioè le modifiche su questi host non si riflettono sulle copie dei dati memorizzati su altri sistemi. Sono supportati diversi modi di versioning dei file, in cui vengono mantenute le versioni precedenti 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, nel caso in cui esistano blocchi identici su più dispositivi, la copia dei blocchi avviene da nodi diversi, in modo simile al funzionamento del sistema BitTorrent. Più dispositivi partecipano alla sincronizzazione, più velocemente avviene la replicazione dei nuovi dati grazie alla parallelizzazione. Durante la sincronizzazione dei file modificati, vengono trasferiti solo i blocchi di dati cambiati e, in caso di rinomina o modifica dei diritti di accesso, vengono sincronizzati solo i metadati.
I canali di trasferimento dei dati vengono creati tramite TLS; tutti i nodi si autenticano tra loro tramite certificati e identificatori di dispositivo, mentre per il controllo dell'integrità viene utilizzato SHA-256. Per identificare i nodi di sincronizzazione nella rete locale può essere utilizzato il protocollo UPnP, che non richiede l'immissione manuale. IP addresses dispositivi sincronizzati. Per configurare il sistema e monitorare sono disponibili un'interfaccia web integrata, un client CLI e un'interfaccia grafica basata sulla libreria GTK, in cui sono ulteriormente forniti strumenti per gestire i nodi di sincronizzazione e i repository.
Modifiche chiave nella nuova release:
- Il backend di archiviazione è stato trasferito 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, oltre a ridurre il numero di errori.
- È stato modificato il formato dei log, che ora sono generati in modo strutturato (messaggio + parametri in formato chiave-valore). È stato aggiunto un nuovo livello di log - WARNING, che non è così dettagliato come INFO, ma fornisce più informazioni rispetto al livello ERROR. È stata data la possibilità di assegnare diversi livelli di log a pacchetti differenti.
- È stata interrotta la conservazione eterna degli elementi cancellati nel database, questi ora vengono 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 solo trattino (cioè, invece di "-home", usare "—home"). Alcune opzioni sono state rinominate o trasformate in comandi secondari.
- È stata interrotta la creazione della directory predefinita al primo avvio.
- È stata implementata la connessione di più reti tra i dispositivi che utilizzano Syncthing 2.x. Per impostazione predefinita, 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 eliminazione dei file.
- A causa delle difficoltà di cross-compilazione di SQLite, è stata interrotta la compilazione di file eseguibili pronti per le piattaforme dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm e windows/arm.
Fonte: opennet.ru
