Syncthing

0
Ваша оценка: Нет

Kлиент-серверное приложение предназначенное для синхронизации файлов.

Syncthing написан на языке Go и по функциональности схож с BitTorrent Sync. В отличие от Dropbox синхронизирует данные напрямую между узлами без участия третьих лиц и сторонних серверов (p2p).

Данный подход реализует полный контроль над файлами: все файлы хранятся только на известных компьютерах, а не где-то в «облаке». Кроме того, нет ограничений по месту (не считая жесткого диска пользователя) и скорость передачи данных искусственно не лимитируется.

Синхронизированные данные не загружаются в облачные хранилища, а напрямую реплицируются между системами пользователя при их одновременном появлении в online, используя развиваемый проектом протокол BEP (Block Exchange Protocol).

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

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

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

Немаловажно, что помимо открытости кода самого приложения, используемый для синхронизации протокол Block Exchange Protocol (BEP), также является открытым.

Основные возможности приложения:

  • синхронизируйте, что угодно и с кем угодно;
  • адаптивный веб-интерфейс;
  • работает в локальной сети и интернете «из коробки», не требует первоначальной настройки;
  • безопасно и конфиденциально: имеется ввиду, что ваши данные никому не передаются, все соединения защищены TLS, узлы защищены сертификатами, допускается обмен данными только с вручную добавленными узлами;
  • приложение и протокол открыты для доработки, модификации и изучения.

Сайт разработчика: http://syncthing.net/
Что почитать?


Разместил: vikos 8 Июнь 2014 в 19:10