Выпуск открытой P2P-системы синхронизации файлов Syncthing 1.2.0

Представлен релиз системы автоматической синхронизации файлов Syncthing 1.2.0, в которой синхронизированные данные не загружаются в облачные хранилища, а напрямую реплицируются между системами пользователя при их одновременном появлении в online, используя развиваемый проектом протокол BEP (Block Exchange Protocol). Код Syncthing написан на языке Go и распространяется под свободной лицензией MPL. Готовые сборки подготовлены для Linux, Android, Windows, macOS, FreeBSD, Dragonfly BSD, NetBSD, OpenBSD и Solaris.

Кроме решения задач по синхронизации данных между несколькими устройствами одного пользователя, при помощи Syncthing возможно создание больших децентрализованных сетей для хранения совместно используемых данных, которые распределены по системам участников. Предоставляются гибкие средства контроля доступа и создания исключений для синхронизации. Возможно определение хостов, которые будут только получать данные, т.е. изменение данных на этих хостах не будет отражаться на экземплярах данных, хранимых на других системах. Поддерживается несколько режимов версионирования файлов, при которых сохраняются прошлые версии изменившихся данных.

При синхронизации файл логически разбивается на блоки, которые являются неделимой частью при передаче данных между системами пользователя. При синхронизации на новое устройство, в случае наличия идентичных блоков на нескольких устройствах, копирование блоков производится с разных узлов, по аналогии с работой системы BitTorrent. Чем больше устройств участвуют в синхронизации, тем быстрее будет проходить репликация новых данных за счёт распараллеливания. В процессе синхронизации изменённых файлов, по сети передаются только изменившиеся блоки данных, а при переименовании или изменении прав доступа синхронизируются только метаданные.

Каналы передачи данных формируются при помощи TLS, все узлы аутентифицируют друг друга по сертификатам и идентификаторам устройств, для контроля целостности применяется SHA-256. Для определения узлов синхронизации в локальной сети может быть использован протокол UPnP, при котором не требуется ручной ввод IP-адресов синхронизируемых устройств. Для настройки системы и мониторинга предусмотрен встроенный web-интерфейс, CLI-клиент и GUI Syncthing-GTK, в котором дополнительно предоставляются средства управления узлами синхронизации и репозиториями. Для упрощения поиска узлов Syncthing развивается сервер координации обнаружения узлов, для запуска которого подготовлен готовый образ Docker.

0_1562748899.png

В новом выпуске:

  • Представлен новый транспортный протокол, основанный на QUIC (Quick UDP Internet Connections) с дополнениями для проброса через трансляторы адресов (NAT). В качестве предпочтительного протокола для установки соединений по-прежнему рекомендуется TCP;
  • Улучшена обработка фатальных ошибок и добавлены средства для автоматической отправки разработчикам отчётов о проблемах. Отправка отчётов включена по умолчанию, для её отключения в настройки добавлена специальная опция. Отмечается, что данные в отчёте о крахе не включают имена файлов, данные из лога, идентификаторы устройств, статистику и другие персональные данные;
  • Использование мелких и фиксированных блоков (128 KiB) объявлено устаревшим, при индексации и передаче содержимого файлов теперь применяются только крупные блоки переменного размера;
  • В интерфейсе обеспечен показ последней ошибки соединения для каждого из определённых адресов;
  • В WebUI компоновка столбцов таблиц оптимизирована для корректного отображения на узких экранах;
  • Внесены изменения, нарушающие совместимость. Новый выпуск не совместим с хостами на базе Syncthing 0.14.45 и более старыми версиями.

© OpenNet