vilice backup
Snapshot an app (or --all, or --machine).
operate recorded before it runs
vilice backup — Snapshot an app (or --all, or --machine)
Snapshots an app's declared volumes together with its spec, so what
comes back is self-contained: the data, and how to redeploy it.
Backups go to a restic repo you own. restic encrypts on this box with
your key, so the destination only ever sees ciphertext and can live on
infrastructure you do not trust.
Configure the repo once with --repo; the password is read on stdin and
written to a 0600 file, never passed on argv where it would land in
the record and the process table.
Vilice stays database-agnostic. An app that needs a consistent dump
declares a backup hook in its spec; Vilice never learns what Postgres
or SQLite is.
Usage:
vilice backup <app> | --all | --machine | --repo <url>
Flags:
--all Snapshot every app on the box.
--machine Snapshot Vilice's own record off-box.
--repo <url> One-time setup: set the restic repo, read its password on
stdin, and initialise it.
Examples:
Point the box at a repo. Do this once, before anything else.
vilice backup --repo s3:s3.example.com/vilice < repo.pass
Snapshot one app's volumes and spec.
vilice backup blog
Snapshot every app on the box.
vilice backup --all
Scope: operate — reachable by an operate or grant key
Record: written before the command runs