NotariumДокументация
Версия документации: latest
RU

Экспорт

Экспорт скачивает всё пространство (space) или отдельную папку одним ZIP-архивом Markdown-файлов. Поскольку файлы пользователя — это источник истины (принцип file-first), экспорт читает их с диска напрямую, а не пересобирает из индекса: архив несёт реальные файлы, включая notarium-id во frontmatter.

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

Как экспортировать

Экспорт живёт на вкладке Export в настройках пространства:

  • Кнопка ставит задачу, дальше идёт прогресс-бар с процентами (когда число заметок известно) и кнопкой Cancel.
  • По готовности архив скачивается автоматически; рядом остаются кнопки Download .zip (скачать ещё) и Export again (экспорт заново).
  • Уйти со вкладки и вернуться безопасно: по возвращении вы снова увидите идущую задачу или готовый к скачиванию файл.

Экспорт отдельной папки доступен из контекстного меню дерева — пункт Export folder. Это та же задача с сужением до поддерева; прогресс показывается «липким» тостом с кнопкой отмены.

Опции

Оба пути экспорта принимают одинаковый набор параметров:

ПараметрЗначенияЧто делает
scopeuser (по умолчанию) · alluser — только ваши заметки; all — всё содержимое пространства, включая mount памяти агента (.notarium/memory).
frontmatterkeep (по умолчанию) · stripkeep кладёт файл как есть; strip срезает YAML-блок — чистая копия для чтения.
folderпутьСузить экспорт до поддерева (то, что делает Export folder).
frontmatter=strip ломает обратный импорт

Срез frontmatter даёт копию с потерями: вместе с YAML-блоком теряются notarium-id и теги. Такой архив удобен, чтобы отдать заметки на чтение, но обратно без потерь его уже не импортировать. Для переноса оставляйте keep (значение по умолчанию).

Экспорт — это не бэкап инстанса

Даже со scope=all архив экспорта несёт только Markdown-файлы пространства. В нём нет служебной БД: учёток, доступов, истории версий, состояния задач. Восстановить из него инстанс нельзя. Резервное копирование — отдельная операция встроенной командой образа, см. Бэкап и восстановление.

Как это работает под капотом

Экспорт устроен потоково, чтобы сколь угодно большая база не оседала в памяти:

  • Асинхронная задача по умолчанию. Когда у хоста есть служебная БД (норма для self-host), экспорт — это устойчивая задача: фоновый воркер собирает ZIP в хранилище артефактов и отдаёт готовый файл с поддержкой докачки. Закрытая вкладка, потерянное соединение и рестарт сервера не срывают экспорт.
  • Скачивание не буферится. Готовый архив браузер стримит прямо на диск, имя берётся из заголовка ответа — большая база не оседает в памяти вкладки.
  • Отмена останавливает работу. Отменённое скачивание перестаёт вытягивать заметки — сервер не продолжает читать всю базу впустую.
flowchart LR
  notes[(Markdown-заметки)] -->|read с диска| worker[Фоновый воркер]
  worker -->|ZIP| artifact[Артефакт задачи]
  artifact -->|download| user([Браузер])
Экспорт без служебной БД

На хосте без служебной БД (она отсутствует только в режиме AUTH_MODE=none) слоя задач нет: экспорт идёт синхронным потоковым путём — тот же ZIP отдаётся прямым скачиванием в рамках одного запроса, без прогресса и докачки. Меняется только способ доставки, результат тот же.

Границы

  • По одному пространству за раз. Пространства — изолированные хранилища со своим доступом; чтобы выгрузить несколько, экспортируйте каждое отдельно.
  • Артефакт живёт по TTL. Готовый ZIP хранится ограниченное время (по умолчанию 7 дней) и удаляется сборщиком мусора; повторно скачать можно, пока он не истёк.
  • Бинарные вложения не экспортируются. Архив несёт текст заметок — Markdown-файлы.
  • Отмена, но не пауза. Задачу можно отменить; паузы и возобновления нет.

Дальше

  • Импорт — вернуть архив обратно или перенести базу в другой инстанс.
  • Обзор раздела — зачем file-first делает импорт и экспорт дешёвыми.