Releases: indhifarhandika/LunarDump
Release list
v0.2.0
🚀 LunarDump v0.2.0 Release Notes
We are excited to announce LunarDump v0.2.0! This release introduces a major new disaster recovery feature: Stream Integrity & Checksum Verification (lunardump restore --verify), along with seamless environment variable loading, uv package manager support, and improved configuration guidance.
🌟 What's New in v0.2.0
🛡️ Backup Integrity & Checksum Verification (--verify)
Ensuring that your encrypted database backups are uncorrupted, authentic, and decryptable before a real disaster strikes is crucial. With lunardump restore --verify, you can now validate your backup archives on-the-fly without restoring them to a live database or writing unencrypted data to disk.
- AES-256-GCM Stream Validation: Authenticates header signatures (
LUNARDUMP_V1), salt, nonces, and cryptographic authentication tags across every chunk. - Cryptographic Checksums: Generates instant SHA-256 and MD5 checksums of the unencrypted payload.
- Zero-Disk Overhead: Performs verification entirely in memory (64KB chunks).
- Direct Cloud Storage Verification: Verify remote backup archives stored in AWS S3, Google Cloud Storage, MinIO, or Cloudflare R2 without manual downloading.
Command Examples:
# 1. Verify local encrypted backup file
lunardump restore --file backup_20260730.enc --key secret.key --verify
# 2. Download and verify directly from Cloud Storage (S3 / GCS)
lunardump restore --config config.yaml --remote-key daily/mysql/backup_20260730.enc --verifyVerification Terminal Report:
LunarDump Backup Integrity & Verification Report
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric ┃ Details ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Backup Source │ s3://company-db-backups/daily/mysql/backup_20260730.enc │
│ Integrity Status │ PASSED (AES-256-GCM Authenticated) │
│ Decrypted Size │ 14.28 MB (14,972,812 bytes) │
│ SHA-256 Checksum │ a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8 │
│ MD5 Checksum │ c4ca4238a0b923820dcc509a6f75849b │
│ Validated Chunks │ 228 chunk(s) │
└━━━━━━━━━━━━━━━━━━━━━━━━━━┴━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
✓ Backup file is authentic, uncorrupted, and ready for disaster recovery.
⚡ Improvements & Fixes
📦 Automatic .env Loading Across All Terminals
- Added
python-dotenv>=1.0.0to core package dependencies. - Added automatic
.envinitialization at CLI entrypoint (lunardump/main.py), resolving environment variables seamlessly out-of-the-box.
⚡ Package Manager Support (uv & uvx)
- Full support and documentation for installing LunarDump via
uv:- Global CLI installation:
uv tool install lunardump - One-off instant execution:
uvx lunardump run --config config.yaml
- Global CLI installation:
📝 Enhanced Configuration & Guidance
- Updated
config.example.yamlandREADME.mdwith explicit comments forstorage:provider options (S3, GCS, MinIO, R2, Local). - Added explanatory notes for
notifications:channels (requires at least 1 channel, supports multi-channel notification setups).
📄 Full Changelog
feat(cli): Added--verifyflag torestorecommand for integrity and checksum verification.feat(cli): Added--remote-keyand--configsupport torestorefor direct cloud storage verification.feat(security): Addedverify_streammethod inStreamCiphercalculating SHA-256 & MD5 checksums.fix(deps): Movedpython-dotenvinto core dependencies array inpyproject.toml.docs: AddedCONTRIBUTING.md,SECURITY.md, and updatedconfig.example.yamlcomments.
⚙️ Installation & Upgrade
Via pip:
pip install --upgrade lunardumpVia uv:
uv tool install --upgrade lunardumpFull Commit History & Repository: github.com/indhifarhandika/LunarDump
v0.1.2
add python-dotenv and fixing load env
v0.1.1
v0.1.0
🌖 LunarDump v0.1.0 — Initial Release
We are thrilled to announce the official initial release of LunarDump (v0.1.0)! 🎉
LunarDump is a lightweight, zero-trust CLI tool built in Python designed to automate, encrypt, and stream database backups directly to multi-cloud storage. This inaugural version lays down the core pipeline for secure, memory-efficient, and configuration-driven database disaster recovery.
✨ What's Included in v0.1.0
🗄️ Core Backup Engine & Driver
-
PostgreSQL Engine Support: Initial driver implementation using
pg_dumpwith native streaming support to handle multi-gigabyte databases without memory spikes. -
On-The-Fly Compression: Automatic compression of raw database dumps into
.tar.gzarchive streams prior to encryption.
🔐 Zero-Trust Security
-
AES-256-GCM Encryption: Local end-to-end symmetric encryption powered by the
cryptographylibrary. Data is encrypted before it leaves your server environment. -
Zero-Leak Credentials: Safe environment variable loading via
Pydantic v2to ensure database passwords and API tokens are never leaked into logs or config files.
☁️ Cloud Storage Integration
-
AWS S3 & S3-Compatible Storage: Direct upload engine supporting AWS S3, Cloudflare R2, and local MinIO instances with multipart transfer callbacks.
-
Automated Retention Cleaner: Set custom retention policies (e.g., retain backups for 30 days) to automatically purge expired archives from cloud buckets.
🖥️ CLI UX & Telemetry
-
Modern CLI Built with Typer & Rich: Clean commands with interactive progress bars, formatted tables, and intuitive
--helpdocumentation. -
Configuration Validation: Added
lunardump config checkcommand to test connectivity to your database, cloud storage, and webhooks prior to executing backups. -
Telegram Webhook Alerts: Real-time event telemetry that posts success or failure notifications directly to your Telegram channel.
🚀 Quick Start
Installation
pip install lunardump
Usage
- Generate your initial configuration file or copy
config.example.yaml:
lunardump config check --config config.yaml
- Execute the full backup pipeline:
lunardump run --config config.yaml
🛠️ Configuration Example (config.yaml)
version: "1.0"
backup:
name: "prod-db-daily"
database:
type: "postgres"
host: "localhost"
port: 5432
name: "production_db"
user: "postgres"
password_env: "DB_PASSWORD"
security:
encrypt: true
algorithm: "aes-256-gcm"
key_env: "LUNARDUMP_ENCRYPTION_KEY"
storage:
provider: "s3"
bucket: "my-lunardump-backups"
region: "ap-southeast-1"
path: "daily/postgres/"
retention_days: 30
notifications:
on_success: true
on_failure: true
channels:
- type: "telegram"
bot_token_env: "TELEGRAM_BOT_TOKEN"
chat_id: "-100123456789"
❤️ Contributors & Feedback
Thank you to everyone testing and contributing to LunarDump! If you encounter any bugs or have feature requests, please open an issue on our [GitHub Issues](https://github.com/LunarDump/lunardump/issues) page.