Skip to content
dbterm

Backup Center · Ctrl B from a saved connection

Backups that keep running.

Create a verified full database recovery point, optionally bundle application files, then keep local, pushed, or vault-pulled copies on independent schedules.

Alt+B instant · Alt+K plans · C copies · daily 01:00 + 13:00

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
RECOVERY COPIES

Local verified · vault pull healthy

2 copies · SHA-256 + format
AGENT

systemd system · PID 2418

next backup 13:00 · pull 14:30
zstd 3 + age X25519 · next: manifest → push/pull → retain

Generation and transfer are independent

One backup. The right copy owner.

The producer first publishes a verified artifact and portable manifest locally. It can push immediately, or a vault can pull later when credentials and storage must stay on the receiving side.

Local and pinned SFTP push/pull are supported; a vault can also pull from rclone://. ssh:// means SFTP, not SCP. rclone push is disabled because safe create-only finalization is not uniform across providers.

dbterm backup copy create --name vault-pull --mode pull --source sftp://backup@producer/archives --destination /mnt/vault --identity /etc/dbterm/vault-ed25519 --host-key SHA256:... --trigger timed --at 02:30 --at 14:30 --timezone Asia/Kolkata

Full snapshot

Backup job

to Local / mounted recovery point

Push

Producer agent

to Local or pinned SFTP vault

Pull

Vault agent

to Local or pinned SFTP producer

rclone pull

Vault agent

to rclone source → local vault

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

    Bundle + wrap

    Optionally add guarded file sets, then apply gzip, ZIP, or zstd compression and optional age X25519 encryption.

  4. 04

    Publish

    Calculate SHA-256, sync, and publish the artifact plus portable manifest without replacing an existing file.

  5. 05

    Copy + retain

    Trigger independent copies, keep their health separate, then record the outcome and apply destination-owned retention.

The sidecar manifest—not filename age—is the publication signal. Copy jobs find every missing completed artifact and move them oldest-first. That reduces repeated transfer work; it is not an incremental database format or point-in-time recovery.

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

Full native recovery point

Use official PostgreSQL/MySQL clients, a consistent SQLite snapshot, a transaction-backed Turso dump, or Cloudflare's native D1 export. Database snapshots are full by default.

02

Files travel together

Add required or optional application folders. A dbterm bundle keeps only relative paths, refuses links and escapes, and records omissions or changed files visibly.

03

Copy health is separate

A failed push or pull does not rewrite a valid local backup as failed. See each copy's lag, verification, throughput, history and retention independently.

04

Recovery key proven

Compress first, optionally encrypt final bytes with age X25519, and keep only the public recipient in a job. Keycheck proves the separate identity before disaster day.

05

Disk identity, not hope

Opt into a sentinel check for mounted storage. The managed-linux-block-device mode adds UUID and filesystem verification, with deployment-specific narrow privileges—never automatic format or repair.

06

Restore is a separate gate

Inspect wrappers, manifests, database format and file sets from content, match the destination engine, then require explicit database and file-target consent.

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. managed-linux-block-device is separately opt-in: exact UUID, filesystem and sentinel checks, with deployment-specific narrow host privileges and hardware setup.

dbterm backup service status --all

Recovery, not hope

Know what the file is first.

Extensions are hints. dbterm unwraps supported compression, age, and bundle layers, validates portable manifests, lists file sets, detects the database format from bytes, and previews the restore plan.

dbterm backup keycheck \
  --identity ./recovery-key.txt \
  --recipient age1...

dbterm backup copy inspect vault-copy \
  --identity ./recovery-key.txt \
  --artifact artifact_abc

dbterm backup restore \
  --connection staging \
  --identity ./recovery-key.txt \
  --restore-files photos=/srv/restored/photos \
  --yes prod.dbterm.zst.age

Database-only restore is the default. Every bundle file set needs an explicit absolute target; existing files stay untouched unless overwrite is selected. Clean database mode needs a second exact-name confirmation.

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 create its full recovery point in an absolute local folder or OS-mounted volume. An independent copy job can move completed artifacts afterward.

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.

Are pull copies incremental database backups?

No. dbterm creates full database recovery points by default. Pull and push transfer only completed artifacts missing at the destination; that is incremental network work, not WAL/binlog capture or point-in-time recovery.

Can it use SCP or push through rclone?

No. ssh:// is only an alias for pinned SFTP; dbterm never opens an SCP shell. rclone is supported as a pull source, but rclone push stays disabled because create-only finalization cannot be guaranteed uniformly.

Save the connection.
Schedule the protection.