Skip to content
dbterm

Backup Center · Ctrl B from a saved connection

Backups that keep running.

Choose an existing saved connection or add one, then set the destination and time. dbterm handles verification, wrapping, retention, history and alerts.

Alt+B instant · Alt+K then N scheduled · Dashboard Ctrl+B preselected

PostgreSQL · MySQL / MariaDB · SQLite · Turso · Cloudflare D1

● prod-postgres · runningrun_8f4a21
WRAP + ENCRYPT

Compressing verified archive

68%
12.4 / 18.1 GiB41.8 MiB/sETA 02:19
DESTINATION

/mnt/db-backups

NVMe volume · 284 GiB free
AGENT

systemd system · PID 2418

up 3d 8h · ≈13 MiB RSS
zstd 3 + age X25519 · next: publish → prune → notify

Source and destination are independent

All four routes work.

The database may be on this machine or across the network. The completed artifact may stay local, land on a mounted volume, or move through a configured rclone remote.

rclone keeps its own credentials. dbterm stores the destination as rclone://remote/path and uses the backup agent's OS account when the job runs unattended.

Local → local

Local database

to Local / mounted folder

Local → remote

Local database

to rclone remote

Remote → local

Remote / cloud database

to Local / mounted folder

Remote → remote

Remote / cloud database

to rclone remote

The verified artifact pipeline

Private until it is complete.

Instant backups, scheduled jobs, and the headless CLI use the same stages and safety rules.

  1. 01

    Stage

    Create the engine-native dump inside dbterm's private state, never directly in the destination.

  2. 02

    Verify

    Check that the dump is non-empty and structurally consistent with the expected engine format.

  3. 03

    Wrap

    Apply gzip, ZIP, or single-worker zstd compression and optional age X25519 encryption.

  4. 04

    Publish

    Calculate SHA-256, sync, and publish locally or through rclone without replacing an existing artifact.

  5. 05

    Retain

    Record history, apply count/age/size ceilings conservatively, and deliver the configured notification.

One durable policy

The small things are the system.

Defaults make the first job short. Advanced sections are there when production needs a stricter answer.

01

Native dump, live signal

Use official PostgreSQL/MySQL clients, a consistent SQLite snapshot, a transaction-backed Turso dump, or Cloudflare's native D1 export. Watch phase and byte progress without loading the dump into RAM.

02

Local or remote storage

Use an absolute folder, mounted volume, or rclone://remote/path. Local capacity remains visible; one configured rclone remote opens S3, SFTP, Drive, Azure and other backends.

03

Bounded retention

Combine latest-count, maximum-age and total-byte ceilings. Oldest eligible artifacts are pruned; the newest success and changed files stay protected.

04

Failure reaches you

Send email on failure, success, or both. Gmail defaults are ready for an app password; custom SMTP, STARTTLS and implicit TLS remain configurable.

05

OS-supervised

Choose a no-admin desktop registration or an elevated boot-time server registration. Inspect startup, runtime, PID, uptime, memory, heartbeat and bounded logs separately.

06

Restore is a separate gate

Inspect wrappers and database format from content, match the destination engine, preview warnings and require explicit consent before a restore begins.

Desktop / user

No admin prompt.

Use systemd user, a macOS LaunchAgent, or a Windows logon task. Start, stop, restart and control startup from Backup Center.

dbterm backup service install

Server / system

Starts at boot.

Choose system scope explicitly for an unattended machine. dbterm explains the required elevation and keeps using the selected config, state and log paths.

dbterm backup service status --all

Recovery, not hope

Know what the file is first.

Extensions are hints. dbterm unwraps supported compression and age layers, detects the database format from bytes, verifies engine compatibility and previews the restore plan.

dbterm backup inspect \
  --identity ./recovery-key.txt \
  prod.dump.zst.age

dbterm backup restore \
  --connection staging \
  --identity ./recovery-key.txt \
  --yes prod.dump.zst.age

Clean mode needs a second exact-name confirmation. Restore support currently targets PostgreSQL, MySQL/MariaDB and local SQLite.

Straight answers

Before you schedule it.

Can I back up an AWS or other remote database to my machine?

Yes. Save a reachable PostgreSQL, MySQL, Turso, or Cloudflare D1 connection, then choose a local/mounted folder or a configured rclone destination. Local-to-local, local-to-remote, remote-to-local and remote-to-remote combinations are supported.

Does the TUI have to stay open?

No. A small native backup agent reads the durable job catalog. Desktop mode follows the user session; server mode is installed explicitly for boot-time operation.

Will retention delete files I placed in the folder myself?

No. Retention only considers successful artifacts recorded for that job, contained by its destination and unchanged from their recorded identity, size and checksum.

Save the connection.
Schedule the protection.