Анонсирован релиз системы синхронизации файлов Syncthing 0.12, решающей задачи, сходные с проприетарной системой BitTorrent Sync. Syncthing позволяет организовать автоматическую синхронизацию файлов пользователя на нескольких устройствах. Синхронизированные данные не загружаются на транзитные облачные хранилища, а напрямую реплицируются между системами пользователя при их одновременном появлении в online.

Код Syncthing написан на языке Go и распространяется под свободной лицензией MPL. Поддерживается работа в Linux, Android, Windows, OS X, FreeBSD и Solaris. Для настройки системы и мониторинга предусмотрен встроенный web-интерфейс, CLI-клиент и GUI Syncthing-GTK, в котором дополнительно предоставляются средства управления узлами синхронизации и репозиториями. Для упрощения поиска узлов Syncthing развивается сервер координации обнаружения узлов, для которого также имеется готовый образ для запуска в Docker.

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

Синхронизируется содержимое файлов, время модификации и, в зависимости от операционной системы, права доступа и символические ссылки. Не переносятся между системами информация о владельце/группе, специализированные файлы (fifo, сокеты), расширенные атрибуты и ACL. Такие операции как переименование или изменение прав доступа синхронизируются на уровне обновления метаданных, без необходимости повторной передачи содержимого. Похожим способом синхронизируются изменения файлов - по сети передаются только изменившиеся блоки данных. Каналы передачи данных формируются при помощи TLS, все узлы аутентифицируют друг друга по сертификатам и идентификаторам устройств, для контроля целостности применяется SHA-256. Для определения узлов синхронизации в локальной сети может быть использован протокол UPnP, при котором не требуется ручной ввод IP-адресов синхронизируемых устройств.

Основные изменения в Syncthing 0.12:

  • Изменены протоколы синхронизации и обнаружения участников. Система Syncthing 0.12 не совместима с прошлыми выпусками и не сможет соединиться с устройствами, работающими на базе прошлой ветки 0.11, или старыми координационными серверами. При этом, так как новые реализации протокола используют иные сетевые порты серверы, Syncthing 0.12 и 0.11 могут сосуществовать не мешая друг другу.
  • Возможность соединения через промежуточные шлюзы. Когда между двумя узлами невозможно организовать прямое соединение, например, из-за нахождения обоих узлов за межсетевыми экранами, соединение может быть организовано через дополнительное звено - relay. В конфигурации по умолчанию указаны адреса нескольких публичных релеев. При желании можно запустить собственный релей или запретить использование релеев. Так как все данные внутри соединения шифруются и через релей проходит уже зашифрованный трафик, владелец релея не может вклинится или проанализировать поток данных.
  • Средства поиска доступных узлов при помощи HTTPS. Протокол обнаружения устройств переписан и теперь использует HTTPS и штатный сетевой порт 443. В Сети запущено несколько географически распределённых общедоступных серверов координации обнаружения участников.
  • В пользовательский интерфейс внесена серия улучшений, таких как индикация прогресса сканирования файлов, возможность временной приостановки работы узла и расширенные генераторы отчётов;
  • Реализована система автоматически устанавливаемых обновлений, достоверность которых заверена цифровой подписью. Без проверки цифровой подписи обновление можно установить вручную при помощи команды "syncthing -upgrade-from http://.../syncthing.tar.gz". Для создания и проверки цифровых подписей представлена новая утилита stsigtool;
  • Поддержка соединения через прокси SOCKS5.

    Источник: http://www.opennet.ru/opennews/art.shtml?num=43270