[Из песочницы] Обзор программы синхронизации Syncthing + установка на Raspberry Pi и  Macbook

syncthing cloud platforms tagsВ этой статье речь пойдет про Syncthing — новое открытое кроссплатформенное приложение, работающее по модели клиент-сервер и предназначенное для синхронизации файлов между участниками (P2P). Приложение написано на языке Go и по функциональности похоже на BitTorrent Sync.После обзора нового сервиса мы с вами попробуем установить его на Raspberry Pi и синхронизировать с ноутбуком.

Обзор системыДля синхронизации файлов между узлами в P2P-сети был написан простой, эффективный и безопасный протокол обмена блоками Block Exchange Protocol (BEP). Программа Syncthing реализует возможности данного протокола, хотя его можно использовать в любом программном обеспечении. Разработка идёт полностью открыто, весь исходный код публикуют на Github. Протокол тоже открыт, так что любые баги можно сразу обнаружить и исправить. Программа выпускается под Mac OS X, Windows, Linux, FreeBSD и Solaris, легко настраивается через удобный веб-интерфейс, работает в локальной сети или через интернет.imageвот так выглядит интерфейс административной панели

Готовые сборки доступны на Гитхабе под все основные платформы, также на сайте имеется документация (англ.) и руководство по быстрому запуску (англ.).

Возможности программы:

Открытый исходный код приложения и открытый протокол. Каждый узел в сети идентифицируется по стойкому сертификату. Поддержка синхронизации на уровне блоков. При маленьком изменении в большом файле будет синхронизироваться лишь изменившаяся часть. Отсутствие искусственного лимитирования канала Возможность явно указать, каким узлам будет доступна синхронизируемая директория. Синхронизация директорий и файлов по дате последнего изменения (пока без поддержки версионности). Опция «master-slave», благодаря которой другие узлы будут лишь синхронизироваться с данной директорией, но не смогут изменять её содержимое. Управление через удобный адаптируемый веб-интерфейс. Кроссплатформенность. Поддерживаются операционные системы Windows, Linux, Mac OS X, FreeBSD и Solaris. Существует неофициальный клиент для Android. Безопасность и приватность. Данные хранятся на клиентских машинах, не требуется взаимодействие со сторонним сервером. Поддерживается TLS. Установка и настройка Теперь после краткого обзора перейдем непосредственно к установке и настройке приложения. Я буду использовать домашний макбук в качестве основного хоста с веб-интерфейсом, а клиент будет установлен на Raspberry PI model B.На макбукеПерейдем на страницу загрузки актуального релиза и скачаем необходимый архив, для Mac OS необходимо загрузить syncthing-darwin-amd64-v0.8.13.tar.gz

imageсписок поддерживаемых на данный момент платформ

Распаковываем скачанный архив и в папке с программой запускаем файл syncthing.imageДожидаемся завершения программы и находим в консоли строку вида:

My ID: WFDJGOXZBKCC45BFO36JCTFM2EPIKSPXZACUZAUTXRYD2RJAELGS

Это — идентификатор системы, запомните его, он пригодится нам чуть поз днее. Теперь займемся клиентом.На Raspberry PiЗайдем в консоль Raspberry Pi и скачаем пакет для этой платформы:

wget https://github.com/calmh/syncthing/releases/download/v0.8.13/syncthing-linux-armv5-v0.8.13.tar.gz Теперь распакуем и запустим сервис

tar xvzf synct* cd synct* ./syncthing Необходимо подождать некоторое время, пока сгенерируется уникальный ключ-идентификатор и также запомнить (записать) его.После этого нужно добавить первый сгенерированный на ноутбуке ключ в конфигурационный файл config.xml.nano /home/pi/.config/syncthing/config.xmlи добавить ID «ноутбука» в ветку repository, а также новый узел:

dynamic

У меня получилось вот так

dynamic
dynamic

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

Настройка клиента на Raspberry Pi завершена, осталось заново запустить сервис командой ./syncthing & Или же добавить его в автозагрузку в файле /etc/rc.local.Проверка работы Открываем в браузере ноутбука снова адрес http://127.0.0.1:8080 и в верхнем правом углу выбираем Edit→Add NodesyncthingВ появившемся окне заполняем поля, указав полученный ранее ID Raspberry Pi, имя хоста. Поле Address оставляем «dynamic».image

Попробуем синхронизировать каталоги. По умолчанию создается папка синхронизации в ~/Sync/ на каждой ноде.Кладем файл и через некоторое время он будет синхронизирован с остальными узлами.

Теперь можно синхронизировать данные между машинами, с помощью быстрого протокола. Для обмена файлами нужно всего лишь сообщить ID своего компьютера тому человеку, с которым хотите организовать совместное хранилище.

Заключение Насколько это приложение удобнее и эффективнее того же Bittorrent Sync — к которому я же привык — покажет время. Пост написан по «горячим следам» спустя всего пару часов после обнаружения информации о Syncthing.Пишите в комментарии свои вопросы, я сейчас буду усиленно тестировать сервис и, постараюсь дополнить пост информацией о скорости синхронизации, нагрузке и др., если это будет интересно.

Ссылки по темеПроект на Гихабе: github.com/calmh/syncthing#image Документация: discourse.syncthing.net/category/documentationimage Форум поддержки: discourse.syncthing.net/

© Habrahabr.ru