Экспорт
Экспорт скачивает всё пространство (space) или отдельную папку одним ZIP-архивом Markdown-файлов. Поскольку файлы пользователя — это источник истины (принцип file-first), экспорт читает их с диска напрямую, а не пересобирает из индекса: архив несёт реальные файлы, включая notarium-id во frontmatter.
Именно поэтому экспорт обратимый — его можно вернуть обратно импортом или перенести в другой инстанс без потери структуры, идентичности и дат. По сути экспорт — не «вывоз данных наружу», а удобная упаковка того, что и так всегда лежит вашими файлами на диске.
Как экспортировать
Экспорт живёт на вкладке Export в настройках пространства:
- Кнопка ставит задачу, дальше идёт прогресс-бар с процентами (когда число заметок известно) и кнопкой Cancel.
- По готовности архив скачивается автоматически; рядом остаются кнопки Download .zip (скачать ещё) и Export again (экспорт заново).
- Уйти со вкладки и вернуться безопасно: по возвращении вы снова увидите идущую задачу или готовый к скачиванию файл.
Экспорт отдельной папки доступен из контекстного меню дерева — пункт Export folder. Это та же задача с сужением до поддерева; прогресс показывается «липким» тостом с кнопкой отмены.
Опции
Оба пути экспорта принимают одинаковый набор параметров:
| Параметр | Значения | Что делает |
|---|---|---|
scope | user (по умолчанию) · all | user — только ваши заметки; all — всё содержимое пространства, включая mount памяти агента (.notarium/memory). |
frontmatter | keep (по умолчанию) · strip | keep кладёт файл как есть; 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 делает импорт и экспорт дешёвыми.