Documentation / Backups
Importing Backups
Push an Odoo backup archive to your server over SSH and import it — for example to migrate an existing Odoo to calmo.cloud.
You can bring an existing Odoo backup into calmo.cloud by pushing the archive to your server over SSH and importing it. This is the recommended way to migrate an Odoo instance from another host to calmo.cloud: export a backup there, push it, and restore it into your service in one step.
What you need #
- An Odoo backup archive (
.zip) containing the database dump and the filestore — the format Odoo's owndb dumpproduces. - An SSH key registered with your team and synced to the server, so you can copy files onto it.
- A backup destination configured for the service.
Importing via the panel #
1. Push the archive to your server #
Copy the backup archive onto the server that runs your service, for example with scp:
scp backup.zip root@203.0.113.10:/tmp/import_backup.zip
The Import Backup dialog (next step) shows this command prefilled for your server — including the right address and target path — ready to copy.
2. Open the Import Backup dialog #
Navigate to the service, open the Backups tab and click Import Backup.
3. Import — and optionally restore #
Enter the path you pushed the file to. Then choose:
- Import only — the archive is stored at your backup destination and appears in the backup list, ready to be restored whenever you want.
- Restore into this service after import — the archive is restored right away: calmo.cloud creates a safety backup of the current state, stops the service, replaces the database and filestore with the archive, and starts the service again. Afterwards the archive is stored at your backup destination, so it remains available as a regular backup.
Watch the progress in the backup list — the record moves from Pending through Restoring to Completed.
Importing via the API #
The same flow is available on the API, which makes migrations scriptable end to end:
# 1. Push the archive to the server that runs the service
scp backup.zip root@203.0.113.10:/tmp/import_backup.zip
# 2. Import — with "restore": true it is restored into the service right away
curl -X POST https://your-panel.example/api/service-odoo/{id}/backups/import \
-H "Authorization: Bearer <api-token>" \
-H "Content-Type: application/json" \
-d '{"source_path": "/tmp/import_backup.zip", "restore": true, "description": "Migration from old host"}'
# 3. Poll the backup until it is completed
curl https://your-panel.example/api/service-odoo/{id}/backups \
-H "Authorization: Bearer <api-token>"
Add "skip_safety_backup": true to skip the safety backup of the current state — useful when the target service is still empty.
Good to know #
- Files pushed to
/tmpare removed from the server after a successful import. Files in other locations are left in place. - If a restore fails, the pushed archive stays on the server, so you can retry without transferring it again. The safety backup taken before the restore lets you return to the previous state.
- The archive must be a regular Odoo backup zip. Archives from any Odoo hosting — including a self-hosted
db dump— work as long as the Odoo version matches the service.