Этот документ фиксирует эксплуатационную модель metadata
DB (agent.db) и локального state dir. Он не
описывает verify/download артефактов — это отдельные операции.
В конфиге агента зарезервирована per-type модель:
metadata_retention:
runs_days: 180
task_logs_days: 30
events_days: 90
audit_days: 365
verification_days: 365
hook_results_days: 90
retention_events_days: 365
job_revisions_days: 0
manifests_days: 0Семантика:
0/null для
job_revisions_days/manifests_days означает
keep forever (пока явно не удалено).IOBACKUP_DB_RETENTION_DAYS
остаётся fallback.Целевая структура state dir:
/var/lib/iobackup/
agent.db
identity/
staging/
locks/
generated-hooks/
cache/
tmp/
metadata-backups/
support-bundles/
rebuild/
exports/
Зарезервированный config:
paths:
state_dir: /var/lib/iobackup
db_path: /var/lib/iobackup/agent.db
identity_dir: /var/lib/iobackup/identity
staging_dir: /var/lib/iobackup/staging
cache_dir: /var/lib/iobackup/cache
tmp_dir: /var/lib/iobackup/tmp
locks_dir: /var/lib/iobackup/locks
generated_hooks_dir: /var/lib/iobackup/generated-hooks
metadata_backups_dir: /var/lib/iobackup/metadata-backups
support_bundles_dir: /var/lib/iobackup/support-bundles
rebuild_dir: /var/lib/iobackup/rebuild
exports_dir: /var/lib/iobackup/exportsТребования (policy):
docs/features/encryption/security.md /
docs/features/encryption/security-threat-model.md).local_retention:
generated_hooks_days: 7
support_bundles_days: 7
metadata_backups_days: 30
tmp_days: 1
exports_days: 7
rebuild_workdirs_days: 3metadata checkПроверка DB/index/schema. Не скачивает artifacts.
iobackupctl metadata check --db /var/lib/iobackup/agent.dbmetadata backupКонсистентная копия bolt DB через read-only
View + Tx.WriteTo (консистентный snapshot на
момент транзакции).
iobackupctl metadata backup --db /var/lib/iobackup/agent.db --output /var/lib/iobackup/metadata-backups/Валидация пути:
filepath.Dir(output) == os.TempDir()), чтобы
случайно не оставить бэкап в /tmp/… без явного намерения —
override: IOBACKUP_ALLOW_METADATA_BACKUP_TO_TMP=1.Ошибки носят machine-readable код (например
METADATA_BACKUP_FAILED,
METADATA_DB_NOT_FOUND).
metadata exportЭкспорт sanitized metadata (JSON): каждая запись проходит
redact.RedactAny (0.17-fix.50), перед записью файла
выполняется финальный проход redaction по всему JSON
(defense in depth).
iobackupctl metadata export --db /var/lib/iobackup/agent.db --output /var/lib/iobackup/exports/metadata.jsonФлаги политики (capability):
--include-paths, --include-env-names,
--include-vault-refs--redaction-profile safe|internal|full (всё равно
capped export policy)Отсутствующие «будущие» buckets не приводят к падению экспорта: в
warnings_notes добавляется предупреждение.
metadata compactВ 0.17-fix.60 — offline-only foundation: команда
существует и возвращает ошибку с кодом
METADATA_COMPACT_REQUIRES_OFFLINE
(iobackupctl печатает
MetadataMaintenanceError, см.
internal/storage/metadata_maintenance.go).
metadata rebuildЗарезервирована команда для будущего rebuild из sidecar manifests:
iobackupctl metadata rebuild --from-destination <type> --prefix <prefix> --dry-runДо реализации возвращает ошибку с кодом
FEATURE_UNSUPPORTED (тот же тип
MetadataMaintenanceError, что и для других metadata CLI
ошибок).
Сценарии:
agent.db цел:
agent.db потерян, artifacts + sidecar manifests
существуют:
docs/business/manual-dr.md).agent.db потерян и sidecar manifests отсутствуют:
identity/agent.identity потерян:
agent_id, что ломает
continuity; рекомендуется бэкапить identity/.GET /api/v1/health
(checks.metadata) и
GET /api/v1/metadata/health.GET /api/v1/capabilities; см.
docs/reference/capabilities.md.