Перейти к основному содержимому

Переносимость данных

В Настройки → Управление данными можно переносить поддерживаемые данные между установками. Это не полный backup сервера.

Версия 3

{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}

Содержит предпочтения, папки, сессии, сообщения, ветки, оценки, артефакты, настройки, заметки, коллекции, документы и фрагменты. Embedding не экспортируются. Архив содержит извлечённый текст, не исходные байты.

exclusions: аккаунты, пароли, сессии/OAuth, credentials, биометрия голоса, персоны/память, медиа, версии/вложения, Work и тома. Каналы, уведомления, календари и автоматизации требуют серверного backup.

Полное восстановление: база с тем же ENCRYPTION_KEY и тома Work. SQLite, Work.

Целостность

SHA-256 канонического libre-json-sort-v1: исключает integrity, сортирует ключи, сохраняет массивы, хеширует compact UTF-8. Ошибка отклоняется. Это не подпись или шифрование.

Экспорт использует те же проверки и 50 MiB. Ограничения: 100 папок, 5000 сессий, 100 000 сообщений, 100 заметок, 5000 коллекций/документов, 100 000 фрагментов, поля 2 000 000, ID 256.

Безопасный импорт

Preflight показывает суммы, план, remap и предупреждения, проверяет schema, ID и связи без записи. Висячие связи отклоняются. Импорт повторяет и пишет одной транзакцией SQLite/PostgreSQL.

  • Пропустить дубли — сохраняет ID, объединяет предпочтения.
  • Перезаписать — заменяет совпадающие ID, не удаляет отсутствующие.

Чужой ID детерминированно переназначается со ссылками, без чтения/перезаписи чужого. После успеха UI обновляется.

Старые архивы

Версия 2 libre-webui-user-data мигрируется без digest и заметок. libre-webui-export 1.0 содержал предпочтения, загруженные сессии и пустой documents. Ограничения сообщаются.

HTTP

МетодEndpointНазначение
GET/api/preferences/exportЭкспорт
POST/api/preferences/import/preflightПлан
POST/api/preferences/importИмпорт

multipart/form-data: archive, strategy, 50 MiB. JSON:

{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}

strategy: skip/overwrite; mergeStrategy: "merge"skip, mergeStrategy: "replace"overwrite.