v1.0.5 — Editable Entries, Cron Presets & Auto-Update

Encrypted Database Backups for Terminal Ninjas

A single lightweight binary for automated MySQL, PostgreSQL, MongoDB, and SQLite backups. Client-side age encryption, an Argon2id vault, and native sync to Google Drive, Cloudflare R2, AWS S3, and local storage.

$ curl -fsSL https://raw.githubusercontent.com/tanzid64/tui-db-manager/main/install.sh | sh

Linux • macOS (Apple Silicon & Intel) • Zero runtime dependencies

Vault Unlocked
➜ ~
dbk v1.0.5 • Secure Database Backup Manager
▶ Backup Jobs Overview
Automated snapshots, client-side encryption & multi-cloud sync
▶ prod-mysql (mysql → r2, keep 7) [gz+age] ⏰ 0 2 * * *
✔ OK (42.8 MB, 2.4s)
users-postgres (postgres → gdrive, keep 14) [gz+age] ⏰ 0 4 * * *
✔ OK (118.2 MB, 5.1s)
analytics-mongo (mongodb → aws-s3, keep 30) [gz] ⏰ 0 0 * * 0
✔ OK (1.2 GB, 24.3s)
sqlite-app (sqlite → local, keep 10) [gz] ⏰ */15 * * * *
✔ OK (4.1 MB, 0.1s)
r Run a Add e Edit d Delete b Restore u Update
[Responsive TUI]
0
Database engines
0
Storage backends
1
Static binary
0
Plaintext secrets

Designed for Reliability & Privacy

Why Developers & DevOps Choose dbk

🔒

Zero Plaintext Secrets

Database credentials, S3 secret keys, and bot tokens are stored in an encrypted local vault (secrets.enc) using Argon2id key derivation and AES-256-GCM authenticated encryption.

🛡️

Client-Side Age Encryption

Backups can be streamed directly into modern age (X25519) encryption before uploading. Unattended servers only need the public recipient key; your private keys stay cold.

🔍

Live Database Discovery

When configuring MySQL or PostgreSQL, dbk dynamically discovers databases on the host and lets you pick from a menu instead of memorizing and manually typing catalog names.

☁️

Native Multi-Cloud Sync

Stream directly to Google Drive (Service Account), Cloudflare R2 (zero egress fees), AWS S3, MinIO, Wasabi, Backblaze B2, or local/NFS mounts with automatic retention pruning.

⏰

OS-Native Scheduler

No memory-leaking background daemon. Registers headless scheduled jobs directly with systemd timers, UNIX cron, or Windows Task Scheduler with 1 click.

🚀

In-Place Self-Updater

Detects new GitHub releases in the background, alerts you with a modal in the TUI, verifies SHA-256 digests against checksums.txt, and safely replaces the binary in-place.

High Efficiency Pipeline

How the dbk Engine Works

Memory-bounded Unix pipe streaming: never buffers multi-gigabyte databases entirely into RAM.

1 DB Dump mysqldump, pg_dump, mongodump, vacuum
2 Compress Streaming Gzip (CPU friendly)
3 Age Encrypt X25519 envelope cipher
4 Cloud Sync S3, R2, GDrive & prune

Official Configuration Guide

How to Set Up Cloud Storage Providers

Step-by-step instructions to obtain API keys and service credentials for your preferred storage destination.

Google Drive SetupService Account

No interactive browser login required. Unattended, robust, and headless.

1
Create a Google Cloud Project:

Go to Google Cloud Console, click the project selector, and click New Project (e.g. dbk-backups).

2
Enable the Google Drive API:

Navigate to APIs & Services > Library. Search for Google Drive API, select it, and click Enable.

3
Create a Service Account & Download Key:

Go to Credentials > Create Credentials > Service Account. Name it dbk-backup-agent and finish.

Open the service account > Keys tab > Add Key > Create new key > JSON. This downloads your service account JSON file.

4
Share Target Folder with the Service Account:

Copy the service account email (dbk-agent@your-project.iam.gserviceaccount.com).

Open Google Drive, create a folder, right-click > Share > paste the service account email with Editor permission.

5
Grab the Folder ID:

Open the shared folder in your browser. Copy the ID at the end of the URL:

https://drive.google.com/drive/folders/1A2B3C4D5E6F7G8H9I0JKLMNOP
Folder ID:1A2B3C4D5E6F7G8H9I0JKLMNOP
Adding into dbk:

# 1. Via TUI: Open dbk → Storage → Press 'a' → Select 'gdrive'

# 2. Paste Folder ID & Service Account JSON (stored securely in vault)

dbk secret set storage/gdrive/credentials --stdin < service-account.json

Engine Diversity

Supported Database Engines

Tailored wizards that ask only for engine-relevant configuration.

PostgreSQL

pg_dump / Custom Formats

Automatic discovery of all databases on the PostgreSQL server. Supports standard SQL streams or custom archive format. TLS enabled.

MySQL & MariaDB

mysqldump / Quick Streaming

Auto-discovers schemas. Streams single-transaction consistent dumps with compression directly to target storage backends.

MongoDB

mongodump / Archive Stream

Connects via host/port or URI. Streams BSON archives for full collections, indexes, and metadata without intermediate disk usage.

SQLite

Zero Server / Safe Vacuum

Single-field path wizard: only asks for the database file path. No host, user, or port fields. Safe consistent backup copies.

Automate Everything

CLI Command Cheat Sheet

Run headless in cron jobs, CI/CD pipelines, Docker containers, or scripts.

dbk

Launches the full interactive Bubble Tea TUI interface

Interactive
dbk run <job-name>

Runs on-demand headless backup for a job and exits (pass --quiet --json for scripts)

Headless CLI
dbk restore <job-name>

Interactively lists historical backup snapshots and safely restores into target database

Disaster Recovery
dbk schedule install <job-name> --at "0 2 * * *"

Registers unattended backup timer with OS scheduler (systemd timer, cron, or Task Scheduler)

OS Scheduling
dbk update

Checks GitHub for newer releases, verifies SHA-256 digest, and atomically upgrades binary in-place

Self-Updater
dbk config export --encrypt-with-passphrase

Exports full configuration and vault secrets into an encrypted portable transfer bundle

Migration / Backup

Get Started in Seconds

Install dbk on Your Machine

# Install latest binary directly via verified installer:

$ curl -fsSL https://raw.githubusercontent.com/tanzid64/tui-db-manager/main/install.sh | sh

# Or install with Go toolchain:

$ go install github.com/tanzid64/tui-db-manager/cmd/dbk@latest

# Launch dbk:

$ dbk

Copied to clipboard!