Создание резервной копии
komrad-cli backup create создаёт зашифрованный набор резервных копий для одного узла KOMRAD. Набор содержит данные всех активных поверхностей и может быть сохранён локально, на SFTP-сервере или в S3-совместимом хранилище.
Быстрый старт
komrad-cli backup create \
--to /var/backups/komrad \
--passphrase "секретная_фраза"
После выполнения в /var/backups/komrad появляется директория набора (например, 20260630T120000Z), содержащая манифест и зашифрованные блобы.
Что включается в резервную копию
| Поверхность | Данные | Механизм |
|---|---|---|
| PostgreSQL | все базы данных KOMRAD | pg_dump -Fc через echelonpg |
| События ClickHouse | таблица komrad_events | нативный BACKUP ClickHouse |
| NATS JetStream | очереди komrad-bus | JetStream snapshot |
| Конфигурации | *.yaml сервисов | tar + zstd |
| Сертификаты и ключи | TLS-материал, учётные данные NATS | tar + zstd |
Поверхности обнаруживаются автоматически через конфигурационные файлы сервисов. Для исключения поверхности используйте --no-pg, --no-ch, --no-natsjs, --no-events или --exclude <поверхность>.
Хранилища
Флаг --to задаёт одно или несколько хранилищ (флаг повторяется):
# Локальная директория
komrad-cli backup create --to /var/backups/komrad --passphrase "..."
# SFTP
komrad-cli backup create --to sftp:backup-server/komrad/backups --passphrase "..."
# S3-совместимое хранилище
komrad-cli backup create --to s3:my-bucket/komrad --passphrase "..."
Для настройки параметров подключения к SFTP или S3 укажите komrad-backup.yaml через --config:
targets:
- type: sftp
host: backup-server
user: komrad
key_file: /etc/echelon/komrad/keys/backup_id_ed25519
path: /backups/komrad
- type: s3
endpoint: https://s3.example.com
bucket: komrad-backups
access_key: AKIAIOSFODNN7EXAMPLE
secret_key: wJalrXUtnFEMI/K7MDENG
prefix: komrad
Шифрование
Резервные копии всегда шифруются. По умолчанию используется age.
| Бэкенд | Флаг | Применение |
|---|---|---|
age (умолчание) | --cipher age | Универсальный; pure-Go |
aes-gcm | --cipher aes-gcm | Pure-Go AEAD |
openssl | --cipher openssl | ГОСТ на Astra Linux / REDOS |
Фраза-пароль задаётся тремя способами (в порядке приоритета):
--passphrase "фраза"- Переменная окружения
KOMRAD_BACKUP_PASSPHRASE cipher.passphraseвkomrad-backup.yaml
Для OpenSSL/ГОСТ укажите параметры в конфиге:
cipher:
backend: openssl
passphrase: "секретная_фраза"
openssl:
cipher: gost2012_256
dgst: md_gost12_256
Резервное копирование событий (ClickHouse)
По умолчанию создаётся полная копия таблицы komrad_events. Для крупных инсталляций доступны дополнительные режимы.
# Полная копия (умолчание)
komrad-cli backup create \
--ch-mode full \
--to /var/backups/komrad --passphrase "..."
# Инкрементальная (относительно последней базовой копии)
komrad-cli backup create \
--ch-mode incremental \
--to /var/backups/komrad --passphrase "..."
# Только события за последние 30 дней
komrad-cli backup create \
--events-window 30d \
--to /var/backups/komrad --passphrase "..."
# Только события за заданный период
komrad-cli backup create \
--events-since 2026-01-01 \
--events-until 2026-06-30 \
--to /var/backups/komrad --passphrase "..."
# Без событий (только настройки и инциденты)
komrad-cli backup create \
--no-events \
--to /var/backups/komrad --passphrase "..."
При инкрементальном режиме новая базовая копия создаётся автоматически, если возраст предыдущей превышает --ch-base-rotate (по умолчанию 7d).
Расписание
systemd-таймер
sudo tee /etc/systemd/system/komrad-backup.service <<'EOF'
[Unit]
Description=KOMRAD backup
[Service]
Type=oneshot
ExecStart=/opt/echelon/komrad/bin/komrad-cli backup create \
--to /var/backups/komrad \
--config /etc/echelon/komrad/komrad-backup.yaml
EnvironmentFile=/etc/echelon/komrad/backup.env
EOF
sudo tee /etc/systemd/system/komrad-backup.timer <<'EOF'
[Unit]
Description=KOMRAD backup — ежедневно в 02:00
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now komrad-backup.timer
Создайте файл с паролем /etc/echelon/komrad/backup.env (права 0600, владелец root):
KOMRAD_BACKUP_PASSPHRASE=секретная_фраза
cron
0 2 * * * root KOMRAD_BACKUP_PASSPHRASE=секретная_фраза /opt/echelon/komrad/bin/komrad-cli backup create --to /var/backups/komrad >> /var/log/komrad-backup.log 2>&1
Проверка резервной копии
После создания копии проверьте целостность:
komrad-cli backup verify /var/backups/komrad/20260630T120000Z \
--passphrase "секретная_фраза"
Команда проверяет манифест и sha256-контрольные суммы всех блобов. Включите проверку в расписание или запускайте вручную после каждого backup create.