Documentation / Operate and recover
Backups and restore
Schedules, coverage, retention, and service recovery.
Configure and inspect coverage
Connect Cloudflare R2 in Settings, then open the Backups section. Automatic backups run daily at 03:00 UTC when the storage connection is configured. You can also start a backup manually. Inspect the latest completed run and the coverage for each persistent service; a configured bucket alone does not prove a successful backup.
The retention policy keeps the latest seven copies and the most recent copy from each of the four most recent weeks per target. These sets can overlap. Failed or incomplete uploads are not successful recovery points. Pull request preview environments are excluded.
What is saved
| Target | Backup |
|---|---|
| Supported PostgreSQL service with a volume | Logical PostgreSQL custom-format .dump |
| Other persistent service volume | File archive .tar.gz |
| Upferry's own platform database | Encrypted .dump.age |
| External database referenced by a URL | Not automatically included |
| Files outside volumes | Not included |
New platform database backups are encrypted before upload using age. Application database dumps and volume archives keep their existing formats and do not receive that additional age encryption. Old plaintext platform .dump files are not retroactively encrypted. R2's storage-side encryption is separate from this distinction.
A live file archive is not a guarantee of a consistent running MySQL, MongoDB, Redis, or SQLite database. Use engine-appropriate backups or a stopped-writer copy for data that needs that guarantee. The current system does not provide point-in-time recovery or replicated database failover.
Restore a service
- Select the intended backup, service, and environment in the panel.
- Check the timestamp, successful status, and whether it contains the data you need.