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

Резервные копии

Резервные копии — это онлайн-снимки SQLite, создаваемые через SQLite Backup API, безопасные при работе с WAL и восстанавливаемые без внешних инструментов.

Модель резервного копирования

Резервная копия — это согласованный снимок базы данных SQLite, создаваемый во время работы сервера:

  • POST /api/v2/backups создаёт снимок через SQLite Backup API, что безопасно с WAL и не блокирует читателей.
  • GET /api/v2/backups перечисляет существующие резервные копии; содержимое кэша и логи не включаются.

Каждая запись резервной копии показывает дату, размер, версию схемы, источник и состояние. UI показывает ту же информацию, и создание резервной копии никогда не прерывает чтение локальных данных.

Что покрывают резервные копии

Резервная копия покрывает всю структурированную базу данных: персонажей, персон, чаты и сообщения, лорбуки, пресеты, конфигурации провайдеров, состояние плагинов и настройки. Она не включает:

  • cache/thumbnails/ — пересоздаваемо и исключено по замыслу;
  • логи — исключены по замыслу;
  • каталоги подготовки импорта — временны по замыслу.

Оригиналы в files/ адресуются по содержимому и никогда не затрагиваются обслуживанием кэша, поэтому они не входят в сам снимок.

Восстановление

POST /api/v2/backups/:id/restore следует безопасной последовательности:

  1. Создание и ротация защитной резервной копии текущего состояния.
  2. Проверка выбранного снимка с помощью PRAGMA quick_check.
  3. Копирование в живую базу через SQLite Online Backup API.

Соединение и репозитории остаются открытыми: ответ несёт restartRequired: false, и последующие чтения и записи продолжают работать без перезапуска. Восстановление никогда не требует внешних инструментов SQLite. Неудачный снимок или копирование возвращает RESTORE_FAILED, а защитная копия сохраняется, поэтому текущее состояние никогда не теряется при неудачном восстановлении.

В UI восстановление требует явного подтверждения, никогда не сообщается как успешное до прохождения проверки целостности и предлагает автоматический возврат к защитной копии при сбое. Удаление резервной копии предупреждает вас, если это последняя рабочая копия.

Резервные копии как страховочная сеть

Те же механизмы снимков защищают опасные операции:

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

См. также