Backup and restore
What a backup contains
An instance backup covers the instance as a whole: its databases, its filestore, its addons and the configuration needed to rebuild it. A database backup covers one database.
Which you want depends on what you are protecting against. A database backup answers "someone deleted the wrong records". An instance backup answers "the server is gone".
Taking one
prod-1# odoocli instance backup --instance acmeprod-1# odoocli instance database backup --instance acmeBoth run as background jobs, and both take an exclusive lock on the instance.
Listing and downloading backups that already exist is never restricted. An unregistered server can always reach its own data. That is deliberate: a licensing state must never be able to hold your data hostage.
What an expired licence does
This is the part worth reading before it matters.
So a licence lapse never means "no backup". It means the copies that leave your building stop, and each skipped target is recorded as a failed result on the job, so the outcome is visible rather than silent.
Similarly, the scheduler stops running unattended backups without a Professional licence, but running one yourself still works:
Where backups go
Every configured target receives a copy. See Targets.
| Target | Edition |
|---|---|
| Local filesystem | Any, including unregistered |
| FTP | Any, including unregistered |
| Amazon S3 and S3-compatible | Professional |
| Azure Blob Storage | Professional |
Configuring a cloud provider is allowed at any edition. Only using one is gated, which means you can set an installation up completely before its licence arrives.
Retention
Each target carries its own retention, so a fast local disk can keep a week while off-site storage keeps a year. Retention is applied by the backup job itself, after a successful upload rather than before one.