Running apps
Backups
Back volumes up to any S3-compatible bucket, encrypted and incremental, and restore them in place or onto another server.
Volumes back up to any S3-compatible bucket: Tigris, AWS S3, Cloudflare R2, Backblaze B2 and the like. Add the bucket once, as a destination, then say which volumes go there.
1Add a destination#
The secret key is asked for, or read from stdin. Add --region if your provider needs one.
2Save the encryption key#
Backups are encrypted with a key Jokku makes the first time you add a destination. Jokku shows it once and asks you to confirm you saved it.
To store a destination's backups unencrypted instead, pass --no-encrypt to backups:destination-add.
3Choose what to back up#
backups:set takes an optional path as a last argument, for a different place in the bucket.
How backups work#
- Complete, but incremental. Each backup is complete on its own, but only uploads what changed since the last one. The disk is read in blocks, and a block already in the bucket is never uploaded again.
- The app keeps running. Its writes to the volume pause for a moment at the end, so the backup is the disk as it was at one instant, the way a power cut would leave it. Databases recover from that the same way they do after a crash.
- Straight from the disk. The server holding the volume uploads to the bucket itself.
Restore#
The current data is backed up first, so a restore can be undone; --skip-backup skips that. The backup downloads while the app runs, then the app restarts with the restored disk.
Manage backups#
Removing a destination, or unsetting a volume, leaves its backups in the bucket.
Coming next#
For now, backups run when you ask. Schedules, and restoring automatically onto another server when one dies, come next.