Backups, checkpoints, and snapshots
Three tools capture machine state, and each answers a different question:Turn it on
Backups hang offmachine config, next to the idle timers:
backups.periodtakes a duration (24h,7d, …). Setting it enables backups.offor0disables them.backups.retentionalso takes a duration and defaults to 7 days. It requires a period to be set first.- The interval counts from the last backup. The SDKs can set a wall-clock cron schedule instead, down to one backup every 15 minutes. That floor is enforced server-side for both kinds: a tighter interval or a cron expression whose occurrences fire closer together is rejected.
- Forks inherit the source machine’s backup schedule, so a fleet forked from a golden keeps the golden’s protection.
What a backup tick does
On each tick, the machine’s vCPUs pause for an instant (state only, without a memory dump), the disk is cloned with a reflink, and the machine resumes. The upload to object storage happens in the background from the clone, so your app sees a sub-second pause and nothing else. A failed capture never leaves the machine paused. Two things keep the storage bill honest:- Unchanged ticks upload nothing. A tick that finds the disk untouched since the last backup records a pointer to it instead of re-uploading.
- Uploads are sparse-aware. Only bytes actually written to the disk are uploaded and stored, so a mostly-empty 100 GB disk backs up small.
List and restore
From the SDKs
Both SDKs expose the schedule, the backup list, and restore undermachines.backups. intervalSecs counts from the last backup; pass cron (standard 5-field syntax) instead for wall-clock schedules like “03:00 every night”.