Backup & Disaster Recovery
Full and incremental backups, point-in-time restore, and scheduled backup automation.
1. How Backups Work
Because KOLMOS stores data as content-addressed Parquet segments, `kolmos backup` copies the object store (segments, catalog history, and the HEAD pointer) to a destination — local path or S3/R2 URI. Re-running a backup against the same destination is effectively incremental, since content addressing means only genuinely new objects get transferred. The full commit history is retained and GC-protected, so a restore can target any commit ever made, not just a moment a backup happened to run.
2. Taking a Backup
Use `--verify` to have KOLMOS restore the backup into a scratch location immediately afterward and run the same integrity check as `kolmos verify` — worth the extra time for anything you'd actually rely on in an incident.
# Backup to local disk, with integrity verification:
kolmos --root /data/kolmos backup --dest /backups/kolmos-2026-08-31 --verify
# Backup to S3-compatible object storage (e.g. Backblaze B2, R2, MinIO):
kolmos --root /data/kolmos backup --dest s3://my-backup-bucket/kolmos \
--s3-region auto \
--s3-access-key-id "$B2_KEY" \
--s3-secret-key "$B2_SECRET"
# List recorded backup checkpoints:
kolmos --root /data/kolmos backup-log --dest /backups/kolmos-2026-08-313. Restoring & Point-in-Time Recovery
`kolmos restore --from <path-or-s3-uri>` writes into the top-level `--root` you pass — always a fresh or empty location, since restore never overwrites live data. By default it restores to the latest state in the backup. Pass `--as-of <manifest-id>` to restore to a specific commit, or `--as-of-time <millis-since-epoch>` to restore to the newest commit at or before a given timestamp (these two flags are mutually exclusive). A `--as-of-time` target older than the oldest recorded commit fails cleanly rather than silently picking the wrong point.
# Restore the latest state into a fresh root:
kolmos --root /data/kolmos-restored restore --from /backups/kolmos-2026-08-31
# Restore to a specific commit:
kolmos --root /data/kolmos-restored restore --from /backups/kolmos-2026-08-31 \
--as-of 01J8X9K2QYR3F7VZC6N4P5M0T1
# Point-in-time restore to "as it looked at this timestamp":
kolmos --root /data/kolmos-restored restore --from /backups/kolmos-2026-08-31 \
--as-of-time 17565984000004. Scheduling Backups
KOLMOS doesn't schedule backups itself — wire `kolmos backup` into your platform's own scheduler. A common pattern is a Kubernetes `CronJob` running the CLI image against the live store's S3/R2 bucket on a nightly cadence; see `docs/deployment.md` in the repo for a full example manifest. Combine with `backup-log` in a monitoring check to alert if a scheduled backup silently stops running.