Увидел свет релиз Seafile 3.0, открытой платформы для создания сервиса облачного хранения данных, организации совместной работы и синхронизации информации. В отличие от таких сервисов как Dropbox, Seafile обеспечивает возможность развёртывания облачного хранилища на собственном подконтрольном оборудовании с использованием для хранения данных технологии Git. Помимо базовых функций хранения на удалённом сервере и обеспечения синхронизации данных между компьютерами, Seafile предоставляет гибкие возможности по организации совместной работы с контентом.
Код проекта написан на языке Python и распространяется под лицензией GPLv3, для хранения метаданных может применяться SQLite или MySQL. Кроме серверной части, параллельно развиваются десктоп-клиент для синхронизации файлов, web-интерфейс SeaHub и мобильные клиенты Seadroid и Seafile-iOS для платформ Android и iOS. Готовые бинарные сборки клиентской части сформированы для Ubuntu, Windows, OS X, Android и iOS. Сборки сервера доступны для Debian, Ubuntu, CentOS/RHEL, Raspberry Pi и Windows.
Особенности новой версии:
- Представлено новое оформление web-интерфейса, в котором применены более элегантные элементы дизайна.
- С целью обеспечения масштабируемости и увеличения производительности переработана модель хранения данных. Хранение таких параметров файлов, как размер, время последней модификации и автор последнего изменения перенесено непосредственно в объект директории, что позволило добиться ускорение вывода списков в web-интерфейсе и дало возможность сохранить время модификации при синхронизации с настольным клиентом. Разделено хранение данных для разных библиотек, что значительно упростило управление библиотеками. Оценка производительности работы с библиотекой, содержащей 400 файлов и данные о 1000 изменений в директории, показала ускорение вывода списка изменений и файлов с 800ms + 490ms (с кэшированием 170ms + 490ms) до 110ms + 290ms.
- Изменения в системе синхронизации файлов: метаданные с историей изменений больше не загружаются для вновь созданных библиотек, что позволило значительно ускорить операцию первой загрузки объемных библиотек;
- В файле конфигурации добавлена опция для привязки слушающего сокета http-сервера к определённому IP-адресу;
- В мобильных и десктоп клиентах улучшены средства управления устройствами;
- Возможность смены пародя для доступа к зашифрованным библиотекам;
- Частичное нарушение совместимости разных версий клиентского и серверного ПО: клиенты Seafile 2.x не смогут загрузить новые библиотеки, созданные на сервере Seafile 3.x, а клиенты Seafile 3.x не смогут создать библиотеки на сервере Seafile 2.x.
Для удобства совместной работы поддерживается создание рабочих областей, в которых члены группы могут размещать произвольную информацию, интересную для участников группы. Наборы файлов могут объединяться в библиотеки, к которым может открываться доступ для отдельных пользователей или групп, а также публичный доступ. Для отслеживания изменения файлов в областях совместного доступа, предусмотрена возможность отправки уведомлений членам группы. Каждая библиотека воспринимается как отдельное хранилище и может синхронизироваться между машинами пользователя по отдельности.
Клиентская часть поддерживает обеспечение синхронизации данных между локальной директорией и определённой библиотекой в облачном хранилище. В web-интерфейсе поддерживаются функции предварительного просмотра и редактирования различных типов файлов, возможность обсуждения файлов с участниками группы, функции ведения списков задач, средства управления проектами, Wiki для совместного создания контента.
На уровне хранения данных библиотеки представлены в форме, напоминающей Git-репозитории. Данная особенность даёт возможность использования версионного контроля, в том числе поддержку доступа к прошлым редакциям хранимого контента, возможность отследить все внесённые изменения (кто, когда и что менял), вернуть прошлое состояние файла или восстановить случайно удалённый файл. Для обеспечения конфиденциальности данных поддерживается шифрование на стадии до отправки информации на сервер (администрация сервера не сможет просмотреть содержимое, не зная пароля). Передача данных между клиентом и сервером ведётся с использованием шифрования.
В основе Seafile лежат технологии, применяемые в системе управления исходными текстами Git. При этом Seafile не зависит от Git и самостоятельно реализует нужные методы, которые упрощены и переработаны для выполнения задач автоматической синхронизации данных, обеспечения возобновления передачи данных в случае разрыва соединения и поддержки различных бэкендов хранения на стороне сервера. Данные хранятся с разбиением на блоки, что повышает эффективность хранения и даёт возможность ускорения передачи файлов за счёт параллельной загрузки блоков с разных серверов хранения.