Skip to main content

Manage Backups

This guide covers the four main backup operations: creating a manual backup, generating a downloadable dump from a deployment, downloading an existing backup, and restoring a backup to a branch.

note

Creating, restoring and importing backups require the Admin role on the project. Any project member can download an existing backup.

:::info Backups need a backup target Backups are stored in the backup target configured for your project (for example a filesystem path on the agent host, or an object-storage bucket). If no backup target is set, scheduled backups do not run and downloads fail with a "no backup target" error.

Set the backup target under Project → Settings → Backup. :::


Automatic backups​

When a project has a backup target configured, Skysize automatically backs up every production branch.

  • Backups run for production branches only, staging and development branches are not backed up automatically.
  • A new backup is taken at most once every 24 hours per branch, and only while the branch is running.
  • The branch must have a successful, active deployment; stopped or dropped branches are skipped.

Retention​

Automatic backups follow a father-son retention policy:

  • Every backup from the last 7 days is kept (the daily tier).
  • One backup per week (a "weekly anchor") is kept for up to 3 months.
  • On the free tier, only the last 7 days are kept, the weekly tier is skipped.

For a production branch backed up daily, this retains roughly 7 daily plus ~12 weekly backups.

Manual backups and imported backups are kept for 90 days and are not subject to the daily/weekly pruning above.


Create a manual backup​

You can trigger a backup at any time, for example, before a major deployment or a data migration.

  1. Open your project and go to the Deployments tab.
  2. Find the deployment you want to back up and click Create Backup.
  3. In the Create Manual Backup modal, optionally fill in Note (optional) to label the backup (for example before migration).
  4. Click Create Backup.

The backup is queued and appears in the Backups tab once it finishes. Manual backups are stored in the same backup target as automatic ones.

note

A manual backup also requires a configured backup target. If none is set, the backup job will fail.


Generate a downloadable dump from a deployment​

You can generate a one-off dump directly from a running deployment. This is useful for local development, quick exports, or moving data to another host.

  1. Open your project and go to the Deployments tab.
  2. Find the deployment you want to dump and click Download Backup.
  3. In the Download a dump modal, choose your options:
    • Type: pick Neutralized database dump for testing/troubleshooting (disables outgoing mail, scheduled actions, and other live integrations so the dump is safe to run in a non-production environment) or Exact database dump (an unmodified copy).
    • Filestore: pick With Filestore (includes attachments and images) or Without Filestore (a smaller, database-only dump).
  4. Click Create Dump.

The dump is queued and you are notified when it is ready. It appears in the Backups tab, where you can download it.


Download an existing backup​

  1. Open your project and go to the Backups tab.
  2. Find the backup you want in the list.
  3. Click Request download. Skysize prepares the archive, then the action becomes Download backup.

The backup is provided as a .zip archive (an Odoo dump containing the SQL database and, unless excluded, the filestore).

note

Downloading reads from the project's backup target. If the project has no backup target configured, the download cannot be served.


Restore a backup​

You can restore any backup to any branch in your project, not only the branch it was taken from. A common use case is restoring a production backup into staging to get realistic test data.

  1. Open your project and go to the Backups tab.
  2. Find the backup you want to restore.
  3. Click Restore.
  4. In the Restore backup modal, select the Restore to branch target.
  5. Confirm.

During a restore the target container is stopped, its database is replaced, and the container is restarted with the restored data.

caution

Restoring replaces the entire database of the target branch. Any data currently in that branch is lost. If you need to keep it, create a manual backup of the target branch first.

caution

Restoring into a production branch overwrites the live production database and cannot be undone. The restore modal shows an explicit warning in this case.


Automatic off-site copy​

On paid plans, Skysize can copy your production backups on a schedule to a bucket that you own: Amazon S3, Google Cloud Storage, Cloudflare R2 or any S3-compatible storage. This gives you a second copy of your data outside the platform. It is not available on the free tier or during a trial.

The off-site copy does not change anything else: daily backups, their retention and restores work exactly as described above. Skysize only writes to your bucket. It never deletes anything from it and never restores from it.

What is copied​

  • On the schedule you choose (weekly, every 2 weeks, or monthly), Skysize takes the latest full backup of the project's production branch and uploads it to your bucket.
  • Each copy is one .zip file with the database and the filestore. It is the same file you get with Download backup on the Backups tab.
  • Copies run during the night, after the nightly backup, in the local time of the project's region.
  • For projects in SaaS mode, each database gets its own file.

Files are stored in the bucket with this layout:

<prefix>/<project name>/<database>/<YYYY-MM-DD>_<backup id>.zip

Set it up​

You need the Admin role on the project.

  1. Create a bucket with your storage provider, and an access key for it (see Recommended access key below).
  2. Open your project and go to Settings, section Off-site copy.
  3. Pick where the copies go, then fill in what that provider needs:
    • Amazon S3: the Bucket, its Region, and an access key.
    • Google Cloud Storage: the Bucket and an HMAC key. Create it in the Google Cloud console under Cloud Storage, Settings, Interoperability, for a service account that can write to the bucket.
    • Cloudflare R2: your Cloudflare account ID (shown on the R2 overview page), the Bucket, and an R2 API token with Object Read & Write permission on the bucket.
    • Other S3-compatible (for example Wasabi, Backblaze B2, MinIO, OVHcloud or Scaleway): the provider's Endpoint URL (it must start with https://), the Bucket, the Region if your provider uses one, and an access key. Turn on Path-style addressing if your provider asks for it.
    • Optionally, a Folder inside the bucket.
  4. Click Test connection to check that Skysize can write to the bucket before saving.
  5. Choose the schedule, then click Save. The section folds into a short summary; click it to open the settings again.
  6. Click Copy now to run a first copy right away and check that the file arrives in your bucket.

To change the destination or the schedule later, click Edit. The Enabled switch pauses and resumes the copies without changing the destination.

The secret key is stored encrypted and is never shown again after you save it. To change it, enter a new one.

:::note Test file in your bucket Test connection writes a small file named .skysize-connectivity-probe into the bucket and leaves it there, because a write-only key cannot delete it. You can delete it yourself at any time. :::

Create a dedicated access key that can only write to this bucket and prefix: no listing, no reading, no deleting. If the key ever leaks, it cannot be used to read or erase your copies. Also turn on versioning or object lock on the bucket so that existing files cannot be overwritten or removed.

On AWS, an IAM policy for such a key looks like this (replace your-bucket and your-prefix):

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::your-bucket/your-prefix/*"
}
]
}

s3:PutObject is enough for large files, which are uploaded in several parts. s3:AbortMultipartUpload is optional and lets an interrupted upload be cleaned up. On Google Cloud Storage, give the service account behind the HMAC key only the Storage Object Creator role on the bucket. Other providers offer similar restricted keys; check their documentation.

Retention in your bucket​

Skysize does not apply any retention to your bucket and never deletes old copies. To keep storage under control, add a lifecycle rule on the bucket that expires copies after the period you want.

Status and failures​

The Off-site copy section shows:

  • the last successful copy,
  • the last failure, with the error message returned by your provider,
  • the history of past copies.

If a copy fails, project admins get a notification, in the dashboard and by e-mail depending on their notification preferences. The copy is retried automatically.

Restore from an off-site copy​

Skysize never restores directly from your bucket. To use an off-site copy, download the .zip from your bucket, then upload it with Import Backup on the Backups tab. See Import an Existing Odoo Backup.