Knowledge base · Restores

Restoring a backup into a new project

How a one-click restore works, why the target must be empty, what to do about Postgres versions and Storage, and what the report tells you.

Restores write your backup into a database you designate. VaultKeep never restores over the project it backed up: the target must be empty, on purpose.

Before you start

  1. Create a new, empty Supabase project, or any other empty PostgreSQL database you control (RDS, Neon, self-hosted). Its Postgres major version must be the same as, or newer than, the version the backup came from; the version is shown on the backup. Storage can only be restored into a Supabase project.
  2. Copy its connection string (direct or session pooler, port 5432).
  3. If you want Storage restored as well, you also need the new project's ref and S3 access keys, so buckets and files can be recreated.

Steps

  1. Open the original project → Backups, pick a database backup, click Restore. A database restore is the whole project: schema and data, plus Storage if you opt in.
  2. Paste the target connection string. To restore Storage too, switch on Also restore storage, pick the storage sync to use (it defaults to the one taken with that database backup) and enter the ref + S3 keys. Leave it off to restore the database alone.
  3. Type the project name to confirm. This is the two-step confirmation; there is no way to skip it.
  4. Watch progress under Restores. You are emailed when it finishes.

The target credentials are used once and destroyed as soon as the restore ends.

What happens

Business (managed) backups: the whole project

Backups taken on the Business plan also hold custom roles, Auth users (with their password hashes), bucket settings and Storage policies, triggers on auth tables, cron jobs, deployed Edge Functions, Auth and API settings, and a bundle of each GitHub repository added to the project (web app, mobile app, desktop app: as many as you need). A restore into a Supabase project replays them in order: roles and Auth rows first, then the schema, then triggers, policies and cron jobs. Into plain PostgreSQL the Auth and Storage parts are created as real tables too, so the restore verifies foreign keys to auth.users.

Two optional fields on the credentials step cover what lives outside the database:

After the restore

If a restore fails, the target is left as it is; fix the cause shown in the report and start a new restore.

Storage-only restores

Clicking Restore on a Storage backup restores buckets and files only. It creates no tables and no rows, so the new project's public schema stays empty. Use it when the database is already in place (for example after a database-only restore) and you want to bring the files across afterwards.


Still stuck? Email support@vaultkeep.dev with your project name (never your connection string) and we'll take a look.