Skip to main content

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

Remote or localagainst prod-1
# odoocli instance backup --instance acme
Remote or localagainst prod-1
# odoocli instance database backup --instance acme

Both 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.

TargetEdition
Local filesystemAny, including unregistered
FTPAny, including unregistered
Amazon S3 and S3-compatibleProfessional
Azure Blob StorageProfessional

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.