---
title: blossom database:upload
url: "/docs/reference/cli/database/upload/"
canonical_url: https://docs.blossom88.com/docs/reference/cli/database/upload/
markdown_url: https://docs.blossom88.com/docs/reference/cli/database/upload.md
summary: Upload or resume a PostgreSQL custom archive
categories:
- cli
- reference
---

# blossom database:upload

Upload or resume a PostgreSQL custom archive

## Usage

    blossom database:upload --file FILE [--id ID] [--backup_storage BACKUP_STORAGE]

## Flags

| Flag | Description |
| --- | --- |
| `--file (required)` | pg_dump --format=custom archive |
| `--id` | Existing upload id to resume |
| `--backup_storage` | Backup Storage id; defaults to Blossom Cloud |

Upload a PostgreSQL custom archive directly to private object storage. Platform
receives metadata, not the archive. The CLI hashes the file, then sends 64 MiB
parts. Keep the local file unchanged until completion.

    pg_dump --format=custom --no-owner --no-privileges --file app.dump SOURCE_DATABASE
    blossom database:upload --file app.dump
    blossom database:upload --id database_upload-... --file app.dump

The upload ID is printed before transfer. To resume after interruption, use that
ID and the same file. Completed parts are reused; the full-file checksum must
match. Use `database:upload:list` to recover an ID after losing terminal output.

Blossom Cloud storage is the default. `--backup_storage BACKUP_STORAGE_ID`
selects an existing Blossom BYOC Backup Storage destination in this Account.

Completed uploads expire after seven days. An active import delays cleanup;
a failed import does not retain an upload indefinitely. Extend or delete it:

    blossom database:upload:extend --id database_upload-...
    blossom database:upload:delete --id database_upload-... --yes

Upload completion checks stored size and archive header. Import verifies the
full checksum before executing the dump. Only import archives you trust.
The current archive ceiling is 100 GiB; the maximum-size migration remains
under qualification. Upload time does not consume the restore deadline.

## Subcommands

- [database:upload:delete](/docs/reference/cli/database/upload/delete/) - Delete a temporary upload or abandon its parts
- [database:upload:extend](/docs/reference/cli/database/upload/extend/) - Keep a completed upload for seven more days
- [database:upload:list](/docs/reference/cli/database/upload/list/) - List temporary database uploads
- [database:upload:show](/docs/reference/cli/database/upload/show/) - Show upload state and completed parts
