backupd
Restoring

The backup manifest

The encrypted manifest stored next to every backupd backup, with table counts, checksums and tool versions, and how to read it.

Next to every backup file, backupd stores a manifest: a small JSON document, encrypted with age to the same keys as the backup. It records what the backup holds, so you can check a file before you restore it.

Where to find it

In your own bucket, the manifest sits next to the backup with .manifest.age added to the name:

…/<backup ID>.pgdump.zst.age
…/<backup ID>.pgdump.zst.age.manifest.age

In the app, the table counts from the latest backup's manifest are shown in the database's Explore tab, and each backup's page lists its Contents.

Read it

The manifest is encrypted but not compressed:

age -d -i backupd.agekey app.pgdump.zst.age.manifest.age | jq .

Fields

FieldMeaning
versionManifest format version.
createdAtWhen the manifest was written.
engineVersionThe database server's version.
toolVersionThe dump tool's version, for example pg_dump (PostgreSQL) 18.1.
tablesOne entry per table or collection: schema, name, rows, bytes, and exact (false when the count is an estimate).
oplogMongoDB only: true when the backup includes the oplog. Restore it with --oplogReplay.
codecThe compression used, zstd.
plaintextBytesSize of the dump before compression.
plaintextSha256SHA-256 of the dump before compression and encryption.
storedBytesSize of the stored .zst.age file.
storedSha256SHA-256 of the stored .zst.age file.
durationMsHow long the backup took.

Check a backup

Check the stored file without decrypting it:

sha256sum app.pgdump.zst.age        # compare with storedSha256

Check the dump inside it:

age -d -i backupd.agekey app.pgdump.zst.age | zstd -d | sha256sum   # compare with plaintextSha256

On this page