Foi lançado o sistema de sincronização automática de arquivos Syncthing 2.0, onde os dados sincronizados não são carregados em armazenamentos em nuvem, mas replicados diretamente entre os sistemas do usuário quando aparecem simultaneamente online, usando o protocolo BEP (Block Exchange Protocol) desenvolvido pelo projeto. O código do Syncthing é escrito na linguagem Go e é distribuído sob a licença MPL. Compilações prontas estão disponíveis para Linux, Windows, macOS e FreeBSD.
Além de resolver problemas de sincronização de dados entre vários dispositivos de um único usuário, o Syncthing permite a criação de grandes redes descentralizadas para armazenar dados compartilhados, que são distribuídos entre os sistemas dos participantes. São fornecidos recursos de controle de acesso e criação de exceções para sincronização. É possível definir hosts que apenas receberão dados, ou seja, alterações nessas máquinas não serão refletidas nas instâncias dos dados armazenados em outros sistemas. Vários modos de versionamento de arquivos são suportados, preservando versões anteriores dos dados que mudaram.
Durante a sincronização, o arquivo é logicamente dividido em blocos, que são indivisíveis ao transmitir dados entre os sistemas do usuário. Na sincronização com um novo dispositivo, se houver blocos idênticos em vários dispositivos, a cópia dos blocos é feita a partir de diferentes nós, similar ao funcionamento do sistema BitTorrent. Quanto mais dispositivos participam da sincronização, mais rápida será a replicação de novos dados devido ao paralelismo. Durante a sincronização de arquivos alterados, apenas os blocos de dados que mudaram são transmitidos pela rede, e ao renomear ou alterar permissões, apenas os metadados são sincronizados.
Os canais de transmissão de dados são formados usando TLS, todos os nós se autenticam mutuamente por meio de certificados e identificadores de dispositivos, e o SHA-256 é usado para controle de integridade. Para identificar nós de sincronização na rede local, o protocolo UPnP pode ser utilizado, eliminando a necessidade de entrada manual. endereços IP dispositivos sincronizados. Para a configuração do sistema e monitoramento, há uma interface web embutida, um cliente CLI e uma GUI baseada na biblioteca GTK, que também oferece ferramentas para gerenciar nós de sincronização e repositórios.
Principais mudanças na nova versão:
- O backend de armazenamento foi transferido do banco de dados LevelDB para SQLite. A migração dos dados é realizada automaticamente na primeira execução após a atualização. Acredita-se que o uso do SQLite simplifique a manutenção e análise de dados, além de reduzir o número de erros.
- O formato de registro foi alterado, agora gerando logs em um formato estruturado (mensagem + parâmetros em formato chave-valor). Um novo nível de log — WARNING — foi adicionado, que é menos detalhado que INFO, mas cobre mais informações em comparação com o nível ERROR. É possível atribuir diferentes níveis de log a diferentes pacotes.
- O armazenamento permanente de elementos excluídos no banco de dados foi interrompido, esses elementos agora são excluídos após 6 meses (o tempo pode ser alterado através da opção "--db-delete-retention-interval").
- O código para análise das opções de linha de comando foi aprimorado e o suporte ao formato antigo com um único traço foi encerrado (ou seja, em vez de "-home", deve-se indicar "--home"). Algumas opções foram renomeadas ou transferidas para a categoria de subcomandos.
- A criação do diretório padrão na primeira execução foi interrompida.
- Foi ativada a configuração de várias conexões de rede entre dispositivos utilizando o Syncthing 2.x. Por padrão, são criadas três conexões — uma para metadados de índice e duas para troca de dados.
- O algoritmo de resolução de conflitos foi alterado na situação de exclusão de arquivos.
- Devido a dificuldades na compilação cruzada do SQLite, a construção de arquivos executáveis prontos para as plataformas dragonfly/amd64, illumos/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm e windows/arm foi interrompida.
Fonte: opennet.ru
