Syncthing – удобное приложение, позволяющее синхронизировать файлы между несколькими устройствами. Присутствует поддержка сохранения последовательных версий файла по нескольким алгоритмам, включая пользовательский, что позволяет использовать Syncthing также для целей резервного копирования, хотя это и не рекомендуется. Приложение и протокол публикуются под открытой лицензией.
Syncthing может работать в локальной сети и сети Интернет, передача всех данных происходит по защищенным каналам TLS (Transport Layer Security) с использованием протокола обмена ключами с совершенной прямой секретностью, чтобы исключить возможность прослушивания. Синхронизация происходит по дате изменения файла, есть поддержка синхронизации на уровне блоков, то есть при небольших изменениях в файле будут синхронизированы только изменившиеся блоки, а не весь файл.
Для обмена данными между устройствами Syncthing использует специально разработанный Block Exchange Protocol (протокол обмена блоками). Протокол используется между двумя или более узлами сети, которые образуют кластер. Каждый узел имеет один или несколько репозиториев файлов, описанных локальной моделью, которая содержит метаданные и хеши блоков. Локальная модель распространяется между всеми узлами в кластере. Объединение всех локальных моделей формирует глобальную модель, включающую в себя наиболее изменённые версии файлов. Каждый узел стремится синхронизировать локальное хранилище с глобальной моделью, запрашивая у других узлов в кластере отсутствующие или обновившиеся блоки.
Для обнаружения устройствами друг друга используется также собственный Device Discovery Protocol v2. Syncthing не использует P2P-сеть для обнаружения устройств или для решения проблемы роутеров NAT, но все соединения между устройствами происходят непосредственно по принципу точка-точка. Для глобального обнаружения используется один или несколько специализированных серверов Discovery, для локального – широковещательный домен. Следует отметить, что возможно соединение непосредственно по IP-адресу/DNS-имени без использования обнаружения вообще, это вариант также является более безопасным (открытый ключ в паре с адресом не попадают в общий, в той или иной степени, доступ). Также возможно использование собственного сервера Discovery.
Особенности Syncthing
- Конфиденциальность. Никакая часть ваших данных никогда не хранится нигде, кроме ваших компьютеров. Не существует центрального сервера, доступ к которому может быть получен (легально или нелегально).
- Шифрование. Всё коммуникации защищены проколом TLS. Использованный механизм шифрования включает совершенную прямую секретность, исключающую возможность доступа к вашим данным даже при получении доступа к ключу шифрования сеанса.
- Аутентификация. Каждое устройство идентифицируется по стойкому криптографическому сертификату. Только устройства, допущенные явным образом, могут подключиться к вашему кластеру.
- Открытое обсуждение. Разработка и использование всегда открыты для предложений.
- Открытый программный код. Весь программный код доступен на GitHub – что видишь, то и получаешь, никакого забавного скрытого бизнеса.
- Открытый протокол. Протокол является документированным стандартом – никакой скрытой магии.
- Открытая разработка. Все программные ошибки немедленно видны всем желающим – никаких скрытых уязвимостей.
- Веб-интерфейс. Настройка и мониторинг Syncthing возможны через динамичный и мощный интерфейс, доступный через веб-браузер.
- Портируемый код. Приложение работает на Microsoft Windows, Mac OS X, Linux, FreeBSD и Solaris. Запустите его на ваших рабочих компьютерах и синхронизируйте их с вашим сервером для резервного копирования.
- Простота. Syncthing не требует IP-адресов или продвинутого конфигурирования: он просто работает, через локальную сеть или Интернет. Каждое устройство идентифицируется по ID. Просто дайте ID вашим друзьям, предоставьте доступ к папке и наблюдайте: UPnP сделает всё необходимое, если вы не хотите настраивать перенаправление портов или не знаете, как.
- Мощный. Синхронизируйте столько папок, сколько вам нужно с различными людьми.
Ссылки