backups v0.2.4 [base]


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

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": "29164d1a75aa1711119d651947d5fece4ee1c381",
  "updated": "2026-09-17 11:31:35 +0300",
  "history": [
    {
      "version": "0.1.0",
      "date": "2026-09-11 16:29:28 +0300",
      "commit": "d5cc3d7f89859e163fd2198ff0f45e795dda982b"
    },
    {
      "version": "0.2.0",
      "date": "2026-09-11 16:38:23 +0300",
      "commit": "a9dd48ba72121bf9a1d6654b6ea4d8948d76fd64"
    },
    {
      "version": "0.2.1",
      "date": "2026-09-12 22:57:42 +0300",
      "commit": "8f10c8697301f0eca9211e3f6a13ccd2bdd5c5fa"
    },
    {
      "version": "0.2.2",
      "date": "2026-09-12 23:22:16 +0300",
      "commit": "db9c47f797b3a96a29b646f86025a87d1eb4d645"
    },
    {
      "version": "0.2.3",
      "date": "2026-09-13 22:57:39 +0300",
      "commit": "a9930d0b98de8ffe41623683bbb3bd6df7eeb79d"
    },
    {
      "version": "0.2.4",
      "date": "2026-09-14 01:03:37 +0300",
      "commit": "8b4f821f3d77c52b7572dbaf126530efc479d4ac"
    }
  ],
  "integrity": "sha256:473854913e2c59ffdd439b1d3f46103ce812b7f1d63244623cbe7bca39b493aa",
  "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 КБ

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

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

История версий

versiondatecommit
0.2.42026-09-148b4f821f3d77
0.2.32026-09-13a9930d0b98de
0.2.22026-09-12db9c47f797b3
0.2.12026-09-128f10c8697301
0.2.02026-09-11a9dd48ba7212
0.1.02026-09-11d5cc3d7f8985