backups v0.2.4 [base]


Бэкапы дерева бота: создание/восстановление/удаление, расписание, ротация, вынос на NAS через outbound, проверка целостности.

versiondatecommitфайлов
0.2.42026-09-1746803aa3a9279

README

# backups

Бэкапы дерева бота: создание, восстановление, удаление, расписание, ротация, вынос на сетевое хранилище, проверка целостности.

Тип: Модуль. Категория: `base`. Зависит от: outbound.

## Описание

По расписанию модуль собирает архив всего дерева бота. Старые архивы ротируются: хранится заданное число свежих, свежий архив проверяется на целостность.

Свежий архив увозится на сетевое хранилище через общий шлюз подключений. Хранилище работает по принципу «как получится»: недоступно — локальный архив всё равно остаётся, а в лог уходит предупреждение. Ротация действует и на удалённой стороне: там тоже остаётся заданное число свежих архивов.

Если задан пароль, архив шифруется — сессии и секреты на хранилище едут шифром и помечаются замочком в кабинете. Шифрованные архивы участвуют в списках, ротации и восстановлении наравне с открытыми. Без пароля архив открытый, а в статусе висит предупреждение.

Восстановление выполняется из кабинета: архив распаковывается поверх текущего дерева, дальше нужен рестарт. Каждая меняющая операция пишется в аудит. Вне расписания архив собирается кнопкой, с флагом «сразу на хранилище».

## Возможности

- `backups.list {}` → архивы `[{name, size_mb, mtime, remote}]` + флаг «есть на NAS» (`.enc` включены)
- `backups.create {upload?}` → собрать архив (сразу на NAS — по флагу)
- `backups.delete {name, remote?}` → удалить (локально и/или на NAS)
- `backups.restore {name, from_remote?}` → восстановить (нужен рестарт)
- `backups.remote_sync {}` → догнать NAS недостающими архивами
- `backups.remote_list {}` → список архивов на NAS
- `backups.status {}` → расписание и здоровье `{last, next, keep, remote_ok}`

## Права

- `backups_manage` — Бэкапы (создание/восстановление/удаление, расписание)

## Web

- `GET /api/backups/list` — архивы и статус
- `POST /api/backups/create`, `POST /api/backups/delete`, `POST /api/backups/restore`, `POST /api/backups/sync`
- Карточка «Бэкапы»

## Конфигурация (`config.schema.json`)

- Обязательных нет.
- Опциональные:
  - `BACKUP_DIR` = `` (дефолт — в `data/`)
  - `BACKUP_TIME` = `04:00`
  - `BACKUP_KEEP` = `10` — сколько архивов держать (локально и на NAS)
  - `REMOTE_DIR` = `bot-backups` — каталог на NAS
  - `BACKUP_PASSPHRASE` = `` (пусто — без шифрования)

Манифест

{
  "name": "backups",
  "version": "0.2.4",
  "category": "base",
  "description": "Бэкапы дерева бота: создание/восстановление/удаление, расписание, ротация, вынос на NAS через outbound, проверка целостности.",
  "requires": [],
  "rights": [],
  "api_methods": [],
  "web_routes": [],
  "commit": "46803aa3a927a3a188c2249f494e5ea5ecf92dc6",
  "updated": "2026-09-17 12:54:21 +0300",
  "integrity": "sha256:b0e84eea85e9c1d9f8d70bd75ada729cfcb0613bec92f8cc4240c9813bcba55a",
  "files": "[9 файлов — см. вкладки ниже]",
  "note": "",
  "wdesc": "",
  "wbody": "",
  "_extra": {
    "api": "",
    "events_emitted": "[]",
    "events_subscribed": "[]",
    "audit_allow": "",
    "shared_routes": "",
    "config_schema": "config.schema.json",
    "env_example": ".env.example"
  }
}

Файлы и исходники

Дерево файлов

  • · корень
    • 3.5 КБ
    • 0.2 КБ
    • 7.2 КБ
    • 2.0 КБ
    • 12.1 КБ
    • 0.4 КБ
    • 2.9 КБ
  • web/
    • 1.0 КБ
    • 5.7 КБ

Предпросмотр

Выберите файл в дереве выше — код откроется здесь.