Full snapshot
Backup job
to Local / mounted recovery point
Backup Center · Ctrl B from a saved connection
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
Compressing verified archive
Local verified · vault pull healthy
2 copies · SHA-256 + formatsystemd system · PID 2418
next backup 13:00 · pull 14:30Generation and transfer are independent
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/KolkataFull snapshot
to Local / mounted recovery point
Push
to Local or pinned SFTP vault
Pull
to Local or pinned SFTP producer
rclone pull
to rclone source → local vault
The verified artifact pipeline
Instant backups, scheduled jobs, and the headless CLI use the same stages and safety rules.
Create the engine-native dump inside dbterm's private state, never directly in the destination.
Check that the dump is non-empty and structurally consistent with the expected engine format.
Optionally add guarded file sets, then apply gzip, ZIP, or zstd compression and optional age X25519 encryption.
Calculate SHA-256, sync, and publish the artifact plus portable manifest without replacing an existing file.
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
Defaults make the first job short. Advanced sections are there when production needs a stricter answer.
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.
Add required or optional application folders. A dbterm bundle keeps only relative paths, refuses links and escapes, and records omissions or changed files visibly.
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.
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.
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.
Inspect wrappers, manifests, database format and file sets from content, match the destination engine, then require explicit database and file-target consent.
Desktop / user
Use systemd user, a macOS LaunchAgent, or a Windows logon task. Start, stop, restart and control startup from Backup Center.
dbterm backup service installServer / system
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 --allRecovery, not hope
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.ageDatabase-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
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.
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.
No. Retention only considers successful artifacts recorded for that job, contained by its destination and unchanged from their recorded identity, size and checksum.
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.
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.