Страницы

понедельник, 12 октября 2015 г.

Microserver. Syncthing синхронизация файлов Android, Windows, Linux

Замечательная открытая программа Syncthing, позволяющая пользователю поддерживать файлы в актуальном состоянии на нескольких компьютерах, под управлением Linux, Android, Windows.

Под капотом, собственный протокол передачи блоков содержимого файлов с шифрованием. Открытое ПО.

Типичное использование синхронизации файлов Syncthing


1. Автоматическая загрузка фотографий с телефона Android на сервер (в моем случае, микросервер под управлением Ubuntu LTS).
2. Автоматическое формирование копии файлов с настольного компьютера, на другом компьютере (в моем случае, микросервер  под управлением Ubuntu LTS).
3. Распределённая папка хранения или обмена.
4. Собственный облачный сервис, на собственном оборудовании.


Простые возможности, но позволяют реализовать собственную поддержку резервирования ценных данных (фотографий, видеороликов) на удалённом (домашнем, постоянно включенном) компьютере, без особых проблем. Сфотографировал - минута (период опроса) - файл лежит на сервере в далёком городе. Передача файлов через Интернет, с прохождением шлюза, с помощью UPnP (в серых сотовых сетях). Также можно сделать версии файлов (File versioning), чтобы случайное удаление на устройстве телефоне, не повлияло на наличие данных. Есть возможность защиты источника файлов (синхронизируемой папки), от изменений сделанных на других устройствах.

Для связи с устройствами, надо фактически знать DeviceID и соблюдать некоторые синтаксические правила именования устройств и папок синхронизации.

※※※

Настройка Syncthing для сервера Ubuntu LTS 12.04.5


Для Debian & Ubuntu есть репозиторий. http://apt.syncthing.net/

Для стабильной ветки Syncthing надо выполнить команды:

$ curl -s https://syncthing.net/release-key.txt | sudo apt-key add -

# Добавление источника стабильной версии Syncthing в список источников APT

$ echo deb http://apt.syncthing.net/ syncthing release | sudo tee /etc/apt/sources.list.d/syncthing-release.list

# Обновление списка пакетов
$ sudo apt-get update
# Установка пакета Syncthing
$ sudo apt-get install syncthing


Команда запуска (можно под обычным пользователем):
$ syncthing

При первом запуске, генерируется начальная конфигурация для компьютера config.xml, сертификат компьютера cert.pem, ключи шифрования key.pem и https-key.pem.
Device ID формируется как HASH-сумма от содержимого сертификата.

Конфигурация сохраняется в: ~/.config/syncthing/
Конфигурационный файл Syncthing config.xml: ~/.config/syncthing/config.xml

Сервер-посредник для анонсирования подключения: udp4://announce.syncthing.net:22026
Также поддерживается IPv6. Т.е. каждое устройство анонсирует себя на этом сервере и таким образом находит свои конечные точки синхронизации (другие устройства).
Можно запустить собственный сервер анонсирования (Discovery server) для большей конфиденциальности, например на собственном хостинге и отвязаться от неконтролируемого сервера-посредника.
Можно также избежать глобального анонсирования (global announce & discovery), строго прописав статические IP, DNS-имена.
В локальной сети действует локальное анонсирование, в пределах подсети, что позволяет файлам домашних компьютеров находится в актуальном состоянии.


Из-за файрвола, у меня не работал веб-интерфейс на адресе: 127.0.0.1:8384, пришлось поправить в config.xml на конкретный IP-адрес интерфейса. После этого, всё запустилось и дальнейшее связывание устройств проходило в графическом интерфейсе пользователя.

Для автозагрузки при старте сервера, надо писать системную задачу, либо просто добавить в автозапуск.

※※※

Выводы


1. Почти идеальная программа.
2. Нет возможности раздачи неавторизованным пользователям. Ну вот есть у меня файлы проектов, которые хотелось бы раздавать с собственного сервера (без поднятия FTP, HTTP и пр.). Syncthing почти приближается к такой возможности, но пока не даёт.

※※※

Ресурсы


1. Официальный сайт Syncthing. https://syncthing.net/
2. Репозиторий для Ubuntu. http://apt.syncthing.net/
3. Документация (en). http://docs.syncthing.net/index.html



※※※

Комментариев нет: