Первый стабильный релиз открытой P2P-системы синхронизации файлов Syncthing
После пяти лет с момента формирования первого тестового выпуска подготовлен первый стабильный релиз системы Syncthing 1.0.0, которая позволяет организовать автоматическую синхронизацию файлов пользователя на нескольких устройствах, решая задачи сходные с проприетарной системой BitTorrent Sync. Синхронизированные данные не загружаются в облачные хранилища, а напрямую реплицируются между системами пользователя при их одновременном появлении в 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.
Выпуск ознаменовал готовность проекта для повсеместного использования и стабилизацию протоколов, в которые в рамках ветки 1.x.x не будут вноситься изменения, нарушающие обратную совместимость. Проект также перешёл на новую схему нумерации выпусков, соответствующую принципу семантического версионирования (x.y.z, где «x» меняется при нарушении обратной совместимости, «y» обозначает значительные функциональные изменения, а «z» — корректирующие обновления).
Из функциональных изменений, добавленных с момента последнего экспериментального выпуска, отмечается реализация возможности ограничения максимального числа одновременных операций сканирования данных, отображение в GUI настроенного лимита интенсивности передачи данных и возможность просмотра локально изменённых файлов для каталогов, синхронизируемых в режиме только для получения данных.
© OpenNet