Перейти к основному содержимому
Версия: 4.6.X

Справочник CLI — резервное копирование и восстановление

komrad-cli backup create

Создаёт набор резервных копий.

komrad-cli backup create [флаги]
ФлагТипУмолчаниеОписание
--to[]string/var/backups/komradХранилище. Допустимые формы: локальный путь (всё остальное, что не подходит под формы ниже, тоже становится локальным каталогом с этим буквальным именем — не «тихим» SFTP/S3), голый токен sftp или s3 (имя цели из --config), либо @N (N-й элемент targets в --config, с нуля). Формы sftp:host/path и s3:bucket/prefix не поддерживаются и отвергаются явной ошибкой. Флаг повторяется.
--passphrasestringФраза-пароль шифрования (или KOMRAD_BACKUP_PASSPHRASE); игнорируется при --cipher jacarta, где escrow-секрет задаётся только через cipher.escrow.passphrase
--cipherstringageБэкенд шифрования: age | aes-gcm | openssl | jacarta
--configstringПуть к komrad-backup.yaml с настройками хранилищ и шифрования
--no-pgboolfalseПропустить поверхность PostgreSQL
--no-chboolfalseПропустить поверхность ClickHouse
--no-natsjsboolfalseПропустить поверхность NATS JetStream
--no-eventsboolfalseПропустить таблицу событий (только управляющая плоскость)
--ch-modestringfullРежим ClickHouse: full | incremental. В версии 4.6 incremental не поддерживается — команда завершается с ошибкой. См. предупреждение.
--ch-base-rotatestring7dВозраст, после которого создаётся новая базовая копия при инкрементальном режиме. В версии 4.6 не имеет эффекта: значение принимается, но нигде не используется, так как сам инкрементальный режим не работает — в отличие от --ch-mode incremental, это не ошибка, а молчаливая инертность.
--events-windowstringОкно событий: 1h | 1d | 1w | 1m | 6m | 1y | all
--events-sincestringНачало периода событий YYYY-MM-DD
--events-untilstringКонец периода событий YYYY-MM-DD
--exactboolfalseТочное окно партиций через логический экспорт
--exclude[]stringИсключить поверхность или под-объект: <поверхность>[:<под>] (например, natsjs, natsjs:EVENTS). Флаг повторяется.
--files[]stringФайловая поверхность: имя=путь. Флаг повторяется.
--pg-bindirstringДиректория с pg_dump/pg_restore (по умолчанию — встроенный echelonpg)
--pg-config-dirstring/etc/echelon/komrad/Директория конфигов сервисов KOMRAD (для обнаружения БД PostgreSQL)
--fail-fastboolfalseПрервать выполнение при ошибке любого хранилища
--print-setboolfalseНапечатать имя созданного набора первой строкой stdout — только при успехе. Используется скриптами, например обёрткой запланированного копирования, чтобы затем передать это же имя в verify

Команда завершается с ненулевым кодом, если хотя бы одно хранилище из --to вернуло ошибку, даже когда остальные хранилища записались успешно — так несопровождаемый вызов (cron, systemd-таймер) не примет частично неудавшийся набор за успех.

komrad-cli backup verify

Проверяет целостность набора резервных копий.

komrad-cli backup verify <set-dir> [флаги]
ФлагТипУмолчаниеОписание
--passphrasestringФраза-пароль шифрования (или KOMRAD_BACKUP_PASSPHRASE); не требуется для JaCarta-копий
--configstringПуть к komrad-backup.yaml; обязателен для JaCarta-копий

Команда проверяет манифест и sha256-контрольные суммы всех блобов. Завершается с ненулевым кодом, если хотя бы один блоб повреждён. Для копий, зашифрованных JaCarta, проверяются только контрольные суммы; полная проверка HMAC выполняется при restore.

komrad-cli backup prune

Удаляет наборы резервных копий вне окна хранения. Подробное описание сценария — в «Ротация».

komrad-cli backup prune <target> [флаги]
ФлагТипУмолчаниеОписание
--keep-daysint0Хранить наборы, созданные за последние N дней
--keep-lastint0Хранить N последних наборов
--dry-runboolfalseВывести план без удаления
--no-stagingboolfalseПропустить очистку осиротевших директорий стейджинга ClickHouse на диске komrad_backup
--ch-config-dirstringДиректория с komrad-processor.yaml для обнаружения ClickHouse (используется только очисткой стейджинга)

Нужен хотя бы один из --keep-days/--keep-last; без обоих команда завершается ошибкой. Оба параметра объединяются по ИЛИ: набор сохраняется, если его оставляет хотя бы один критерий. Самый новый набор не удаляется никогда. Базовый набор не удаляется, пока от него зависит другой сохраняемый набор. Набор, чей манифест не удалось прочитать или разобрать, всегда сохраняется и отмечается в отчёте отдельной строкой. Директории <набор>.partial (незавершённая выгрузка) никогда не перечисляются и не удаляются.

<target> — только локальный путь к каталогу с наборами; хранилища sftp:/s3: и ссылки @N на komrad-backup.yaml командой не поддерживаются и завершаются явной ошибкой, а не тихим бездействием.

komrad-cli restore

Восстанавливает узел KOMRAD из набора резервных копий.

komrad-cli restore <set-dir> [флаги]
ФлагТипУмолчаниеОписание
--passphrasestringФраза-пароль шифрования (или KOMRAD_BACKUP_PASSPHRASE)
--only[]stringВосстановить только указанные поверхности: postgres | clickhouse | natsjs | files. Флаг повторяется.
--restore-rootstring/Корневая директория для файловых поверхностей
--pg-bindirstringДиректория с pg_dump/pg_restore
--pg-config-dirstring/etc/echelon/komrad/Директория конфигов сервисов (для подключения к PostgreSQL)
--configstringПуть к komrad-backup.yaml
--forceboolfalseИгнорировать проверку версии и проверку запущенных сервисов
--no-startboolfalseВосстановить данные без запуска сервисов
--startboolfalseЗапустить сервисы после восстановления (явно)

backup.env

Конфигурация запланированного копирования (/etc/echelon/komrad/backup.env, права 0600 root:root), которую читает обёртка /usr/libexec/komrad/komrad-backup.sh. Подробное описание сценария — в «Настройка».

КлючУмолчаниеОписание
KOMRAD_BACKUP_PASSPHRASE(пусто)Фраза-пароль шифрования. Обязательна: пока пуста, обёртка отказывается запускать резервное копирование.
KOMRAD_BACKUP_TARGET/var/backups/komradХранилище, передаваемое как --to в backup create.
KOMRAD_BACKUP_KEEP_DAYS14Передаётся в backup prune --keep-days.
KOMRAD_BACKUP_EXTRA_ARGS(пусто)Дополнительные аргументы backup create; значение разбивается по пробелам (word-split), поэтому можно передать несколько флагов.
KOMRAD_BACKUP_LOG/var/log/echelon/komrad/backup.logФайл полного вывода create/verify/prune.
KOMRAD_BACKUP_PATH/opt/echelon/komrad/bin:/usr/bin:/binPATH для запуска обёртки.
PGPASSFILE/root/.pgpassФайл паролей libpq для подключения к PostgreSQL.
KOMRAD_BACKUP_NOTIFY_CMD(пусто)Запускается при сбое с кодом возврата первым аргументом. В отличие от KOMRAD_BACKUP_EXTRA_ARGS значение не разбивается по пробелам: это путь к одному исполняемому файлу, а не командная строка с аргументами.

komrad-backup.yaml

Конфигурационный файл хранилищ и шифрования (--config). В строковых значениях поддерживается подстановка ${ИМЯ} из переменных окружения. Ключи *_file задают путь к файлу с секретом; явное значение имеет приоритет над файлом.

cipher:
backend: age # age | aes-gcm | openssl | jacarta
passphrase: "" # фраза-пароль (или ${ENV})
openssl:
cipher: "" # обязателен для backend: openssl (например, kuznyechik-ctr)
mac: hmac-sha256 # hmac-sha256 | gost-mac | magma-mac
engine: auto # auto | engine | provider | none
iter: 600000 # итерации PBKDF2
jacarta: # см. «Шифрование токеном JaCarta»
module: "" # путь к библиотеке PKCS#11
token_label: "" # метка токена (CKA_LABEL)
user_pin: "" # PIN пользователя (или ${ENV})
key_label: "" # метка ключа на токене
public_key_pem: "" # путь к открытому ключу получателя
agent_path: "" # путь к сайдкару komrad-jacarta
verify_before_write: false # выгружать блоб во временный файл и сверять
# имитовставку (токен, затем escrow) до выдачи
# открытого текста; включает откат на escrow
# ценой двойной выгрузки
scratch_dir: "" # каталог временного файла verify_before_write
# (умолчание — TMPDIR); нужно место под самый
# крупный отдельный блоб, не под весь набор
escrow:
passphrase: "" # аварийная escrow-фраза для восстановления без токена;
# единственный способ задать escrow при создании копии

targets:
- type: local # local | sftp | s3
path: /var/backups/komrad

- type: sftp
host: backup-server
port: 22
user: komrad
password: "" # или password_file
key_file: /etc/echelon/komrad/keys/backup_id_ed25519
key_passphrase: "" # или key_passphrase_file
known_hosts: "" # путь к known_hosts
fingerprint: "" # альтернатива known_hosts: SHA256-отпечаток ключа хоста
remote_dir: /backups/komrad
legacy_compat: false # включить совместимость со старыми SSH-серверами
insecure_skip_host_key: false # отключить проверку ключа хоста (небезопасно)

- type: s3
endpoint: https://s3.example.com
bucket: komrad-backups
access_key: ""
secret_key: "" # или secret_key_file
region: ""
prefix: komrad
use_ssl: true

fanout:
tee_threshold: 1GiB # блобы крупнее порога пишутся во все хранилища параллельно

komrad-jacarta

Сайдкар для операций с токеном JaCarta (см. Шифрование токеном JaCarta). PIN передаётся только через переменную окружения KOMRAD_JACARTA_PIN.

КомандаНазначение
init-keyСгенерировать ключевую пару ГОСТ Р 34.10-2012 на токене и выгрузить открытый ключ
import-keyВыгрузить открытый ключ существующего ключа на токене
decrypt-dekРасшифровать ключ данных при восстановлении (вызывается komrad-cli restore автоматически)
ФлагКомандыОписание
--moduleвсеПуть к библиотеке PKCS#11 (обязателен)
--token-labelвсеМетка токена (CKA_LABEL)
--key-labelвсеМетка ключа на токене
--paramsetinit-keyПараметры кривой ГОСТ: TCA (умолчание) | A | B
--pubkey-outinit-key, import-keyПуть для записи открытого ключа (PEM)