Выпуск P2P-системы синхронизации файлов Syncspirit 0.4.1, совместимой с Syncthing

Доступен релиз программы syncspirit 0.4.1, позволяющей организовать автоматическую непрерывную синхронизацию файлов пользователя на нескольких устройствах. Проект решает задачи сходные с проприетарной системой Resilio Sync (бывший BitTorrent Sync). Syncspirit написан на языке C++ и распространяется под лицензией GPLv3. Графический интерфейс построен с использованием библиотеки FLTK; для хранения БД используется отечественная встраиваемая СУБД libmdbx; для обработки событий применяется акторный фрейморк rotor. Готовые сборки доступны для Linux (x86_64, AppImage), Windows (поддерживается Windows XP) и macOS.

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

В отличие от проекта Syncthing, который написан на языке Go и использует клиент-серверную архитектуру и REST-API (в качестве клиента выступает веб-браузер), syncspirit предоставляет как реализацию в виде фонового процесса syncspirit-daemon, так и отдельное приложение с графическим интерфейсом, позволяющее более экономно расходовать оперативную память.


Новшества в версии 0.4.1:

  • Унифицированная модель разделяемых папок, позволяющих получить детальную информацию о любом файле, включая удалённые, из папки как на локальном, так и на сопряжённом устройстве.
  • Возможность импорта содержимого папки. Актуально для случаев, когда файлы уже имеются локально и хотелось бы избежать сетевой синхронизации.
  • Повышена производительность синхронизации большого количества маленьких файлов.
  • Улучшена совместимость с протоколом BEP:
    • Возможность задавать тип синхронизации папки (folder_type): только получение изменений, только отправки и двунаправленная синхронизация.
    • Поддержка опции “disable_temp_indixes” для отключения информирования сопряжённых устройств о процессе скачивания больших файлов.
    • Поддержка синхронизации прав доступа к файлам (permissions) и возможность их игнорирования (ignore_permissions).
    • Возможность задания флага “ignore_deletes” для предотвращения локального удаления разделяемых файлов если они были удалены на сопряжённом устройстве.
    • Возможность задания флага “auto-accept” для автоматической синхронизации ранее неизвестных файлов для доверенных устройств.
    • Возможность задания флага “introducer” для автоматического сопряжения с устройствами, которые известны ранее сопряжённому устройству.
    • Возможность сжатия исходящего трафика (данных и метаданных) с помощью алгоритма LZ4.
  • Возможность сортировки файлов перед синхронизацией: в алфавитном порядке, по размеру или по дате модификации.
  • Исправлены найденные ошибки.

Release. Ссылка here.