BackupDB

BackupDB Script - Release Notes

A comprehensive database backup script with multi-storage backend support, automatic dependency management, and enhanced security features.


Version 7.0 (February 16, 2026) - Robust Error Handling & Security Hardening

Major Rewrite: Error Handling Framework

The script’s core error handling has been completely rewritten. The previous approach (set -euo pipefail) caused silent crashes when commands like grep returned non-zero in normal operation. v7.0 uses explicit error handling throughout with no silent failures.

Breaking Changes

New Features

Security Improvements

Bug Fixes

| Bug | Fix | |—–|—–| | set -u + unset $VGX_DB_HOSTS crashes | All env vars use ${VAR:-default} | | sha256sum missing on macOS | Auto-detects sha256sum vs shasum -a 256 | | check_for_updates pipeline crash | Added \|\| true to grep pipeline | | git status --porcelain \| grep -q '.' | Captures to variable, tests with [[ -n ]] | | grep -Ev returns 1 if all system DBs | Added \|\| true | | validate_config kills script via set -e | Explicit if ! validate_config; then die | | Passwords visible in ps via xargs bash -c | Uses --defaults-extra-file temp file | | export -f for parallel backups | Replaced with background & jobs + wait | | cd in upload functions mutates global CWD | Wrapped in subshells (cd ... && cmd) | | cleanup_local_backups does rm -rf $BACKUP_DIR | Only deletes .sql.gz files | | --debug flag parsed too late | Arguments parsed before env loading or config |

Backblaze B2 / S3-Compatible Fixes

| Issue | Fix | |——-|—–| | aws s3 ls validation unreliable on B2 | Uses aws s3 ls "s3://$BUCKET/" (list specific bucket) | | --endpoint-url= format causes errors | Uses space-separated --endpoint-url "$S3_ENDPOINT" | | --region not passed to AWS CLI | Included in aws_cmd when S3_REGION is set | | Upload failure crashes script | Captures output, shows error, returns 1 | | Upload of non-backup files to S3 | Added --exclude "*" --include "*.gz" filter |

Script Structure (New Order)

1. Shell header + copyright (NO set -euo pipefail)
2. Colors, mode defaults, VERSION="7.0"
3. die() + log() — minimal functions for arg parsing
4. show_help() + show_version()
5. Parse arguments (--debug, --test, --dry-run, --help, --version)
6. load_env_file() + load env (script dir → CWD → $HOME)
7. Configuration variables (all with :- defaults)
8. Date + cross-platform checksum detection
9. Lock file + trap cleanup + create_mysql_defaults()
10. Utility functions (check_for_updates, check_command, show_config, etc.)
11. Validation functions
12. Storage/upload functions (git, s3, onedrive)
13. Backup functions (backup_database, run_backups)
14. Main execution

Version 6.9 (September 17, 2025) - Parallel Backups & Performance Optimizations

🚀 Major Features

⚙️ New Environment Variables

VGX_DB_MAX_PARALLEL_JOBS=4  # Set the number of parallel backup jobs

🔧 Technical Improvements

💡 Benefits


Version 6.7 (August 6, 2025) - Enhanced Cleanup Features

🚀 New Features

⚙️ New Environment Variables

VGX_DB_DELETE_LOCAL_BACKUPS="true"     # Local cleanup (now defaults to true)
VGX_DB_GIT_RETENTION_DAYS="30"         # Keep 30 days of backups
VGX_DB_GIT_RETENTION_DAYS="0"          # Delete all old backups
VGX_DB_GIT_RETENTION_DAYS="-1"         # Never delete (default)

🔧 Technical Improvements

⚠️ Breaking Changes


Version 6.6 (August 6, 2025) - Configurable Local Backup Cleanup

🚀 Major Feature: Local Backup Cleanup

🔧 Technical Implementation

💡 Benefits


Version 6.5 (August 6, 2025) - Automatic Environment File Loading

🚀 Major Feature: Auto .env Detection

🔧 Technical Improvements

💡 Benefits for Distribution


Version 6.4 (July 24, 2025) - Major Fixes & Optimizations

🐛 Major Fixes

⚙️ Environment Variable Changes

🔧 Technical Improvements


Version 5.0.1 (July 22, 2025) - Multi-Storage Backend Support

🚀 Major Feature: Multi-Storage Backend Support

🏗️ Key Architecture Changes

✨ Enhanced Features

✅ Completed Status


Version 4.2 (July 22, 2025) - Environment Variable Support

🚀 Major Feature: Secure Configuration

💡 Benefits


Version 4.1 (July 22, 2025) - Centralized Logging

🚀 New Features

🔧 Code Quality Improvements


Version 4.0 (July 22, 2025) - Major Enhancements

🚀 Major Enhancements

🔧 Technical Improvements

✨ New Features

🐛 Bug Fixes


Version 3.5 (April 20, 2025) - Foundation Release

🚀 Core Features


About This Script

BackupDB is a comprehensive database backup solution that has evolved from a simple MySQL backup script to a sophisticated multi-storage backend system with automatic dependency management, configurable cleanup options, and support for multiple cloud storage providers.

Key Features

Supported Platforms

Storage Backends


For detailed usage instructions and configuration examples, see the main script documentation.