Releases: wnstify/backupd
v3.2.4
Full Changelog: v3.2.3...v3.2.4
v3.2.3
Full Changelog: v3.2.2...v3.2.3
v3.2.2 - Cron Fallback Scheduler & CLI Fixes
Highlights
This release adds a cron fallback scheduler for environments without systemd (Alpine Linux, RHEL/CentOS 6, Docker containers) and fixes five CLI bugs affecting restore, status, and backup listing commands.
Added
- Cron Fallback Scheduler (BACKUPD-038): Automatic scheduling on non-systemd systems
- Auto-detects scheduler: systemd → cron → manual instructions
- New
lib/scheduler.shmodule with unified API detect_scheduler()— Returns "systemd", "cron", or "none"oncalendar_to_cron()— Converts OnCalendar expressions to cron format- Cron entries managed via
/etc/cron.d/backupd - Scripts detect
BACKUPD_CRON=1and add 0-5 min random delay (simulates RandomizedDelaySec) - Status display shows scheduler type: "(systemd)" or "(cron)"
- Full multi-job support with cron fallback in
create_job_timer() - Uninstall cleans up cron entries automatically
- Target systems: Alpine Linux, RHEL/CentOS 6, Docker containers
Fixed
- CLI Trap Scope (BACKUPD-037): Fixed
temp_output: unbound variableerror on script interrupt — changed trap fromRETURN EXIT INT TERMtoRETURNonly - Exit Code Masking (BACKUPD-037): Fixed CLI returning exit code 1 on success — now captures exit code into variable before exit
- Restore Script Path (BACKUPD-037): Fixed
restore db/filesfailing with "script not found" — uses unifiedrestore.shwithRESTORE_TYPEenv var - List Backups (BACKUPD-037): Fixed
restore --listshowing legacy rclone patterns — now queriesrestic snapshots --tag - Status Command (BACKUPD-037): Fixed
statusreturning exit code 1 when log files have no matches — added|| trueto grep pipelines
Technical
- New
lib/scheduler.shmodule (373 lines) with OnCalendar-to-cron conversion - Cron entries include
nice -n 10 ionice -c3for systemd parity - Generated scripts embed
BACKUPD_CRON=1check with random delay scheduler.shadded toinstall.shandupdater.shmodule lists
Checksums
See SHA256SUMS file for verification.
v3.2.1 - Schedule Templates, Bulk Operations & Signal Handling
Highlights
This release introduces schedule templates for quick setup, bulk operations for managing multiple jobs at once, and signal handling to prevent orphaned locks.
Added
-
Schedule Templates (BACKUPD-035): Pre-defined scheduling presets
backupd schedule templates list- View available presetsbackupd schedule templates show <name>- Show preset details- Built-in templates: minimal, standard, intensive, business-hours
-
Bulk Schedule Operations (BACKUPD-034): Manage all jobs at once
backupd schedule --all set <template|cron>- Schedule all jobsbackupd schedule --all disable- Disable all schedulesbackupd schedule --all status- View all schedule statuses
-
Schedule Conflict Auto-Suggest (BACKUPD-033): Smart scheduling
- Detects when multiple jobs would run at the same time
- Suggests staggered alternatives with offset times
-
Signal Handling (BACKUPD-036): Graceful cleanup
- Proper cleanup on Ctrl+C (SIGINT) and SIGTERM
- Prevents orphaned restic locks from interrupted operations
Fixed
- Fixed bulk schedule showing "failed" for unconfigured jobs (now shows "skipped")
- Fixed template show with missing argument causing unbound variable error
- Fixed invalid template name causing script crash
- Fixed silent exit during bulk operations when count incremented from 0
Technical
- Signal handlers in
lib/core.shfor EXIT, INT, TERM signals - Child process tracking with
BACKUPD_CHILD_PIDSarray - Improved validation for schedule template operations
Checksums
See SHA256SUMS file for verification.
v3.2.0 - Per-Job Scheduling & FlashPanel Support
What's New in v3.2.0
Per-Job Scheduling via CLI
Configure independent backup schedules for each job without using the interactive menu.
# Set database backup schedule for production job
backupd job schedule production db "*-*-* 02:00:00"
# View all schedules for a job
backupd job schedule production --show
# Disable files backup timer
backupd job schedule production files --disable
# JSON output for automation
backupd job schedule production --jsonFeatures:
- Support for all 4 backup types:
db,files,verify,verify-full - Schedule validation with OnCalendar format checking
- Conflict detection warns about overlapping schedules
--allflag shows cross-job schedule overview- Interactive schedule menu for non-CLI users
- Fixed:
enable_job()now recreates timers from stored config
FlashPanel Detection
Full auto-detection support for FlashPanel hosting control panel.
Modes:
- Non-isolated:
/home/flashpanel/{site}- all sites under single user - Isolated:
/home/{user}/{site}- each site has own system user
Features:
- Service detection via
flashpanel.service - Binary fallback at
/root/.flashpanel/agent/flashpanel - Panel selection menu options (12 & 13)
- Mode override prompt during setup
detect_flashpanel_isolation_mode()helper function
Technical Details
- Commits: BACKUPD-008 through BACKUPD-032 (25 total)
- Files changed: 9 files, +873 lines
- Full backward compatibility maintained
Installation
# Fresh install
curl -fsSL https://raw.githubusercontent.com/wnstify/backupd/main/install.sh | sudo bash
# Existing users - auto-update
sudo backupd --updateChecksums
See SHA256SUMS for tarball verification.
Full Changelog: https://github.com/wnstify/backupd/blob/main/CHANGELOG.md
v3.1.4 - Multi-Distribution Support
What's New
Multi-Distribution Package Manager Support
Automatic detection and installation of dependencies across 6 package managers:
- apt — Debian, Ubuntu, Mint, Pop!_OS, Kali, Raspbian
- dnf — Fedora, RHEL 8+, Rocky Linux, AlmaLinux, Amazon Linux
- yum — RHEL 7, CentOS 7, Oracle Linux
- pacman — Arch Linux, Manjaro, EndeavourOS, Artix
- apk — Alpine Linux
- zypper — openSUSE, SLES
wget Fallback Support
All HTTP operations now work with either curl or wget:
download_to_file()helper with curl/wget fallbackfetch_url()helper with curl/wget fallback- Updated
curl_with_retry()with wget fallback - Updated
check_network()with wget fallback
Explicit Dependency Checks
Added sha256sum and base64 to required commands validation in install.sh
Improved Error Handling
- Graceful warnings for unsupported distributions with manual install instructions
- Distro-appropriate install hints via
get_install_hint()function - Improved systemd detection messaging
Cross-Distribution Package Installation
- argon2 — Works across all 6 supported package managers
- bzip2 — Uses package manager abstraction for RHEL-family distros
- unzip — Cross-distribution support via package manager abstraction
Installation
curl -fsSL https://raw.githubusercontent.com/wnstify/backupd/main/install.sh | sudo bashVerification
# Verify SHA256
sha256sum -c SHA256SUMS
# Expected hash
bd0fd95b1acc74462824e743bd61dd5b34185bc161464e9872c30eb1653265f4 backupd-v3.1.4.tar.gzv3.1.3 - Bug Fixes
Summary
27 bug fixes across 11 files, verified by 12 parallel agents.
Fixed
Logging & Debug
- Function stack validation on exit
- Enhanced password redaction for quoted values
- Subsecond precision in debug session IDs
Core
- Path validation now allows bracket characters
- Network check tries curl before ICMP ping
- Improved disk space warning messages
- Documented Bash-specific compgen usage
Crypto Security
- Persistent machine ID fallback when /etc/machine-id missing
- Atomic salt file generation
- Debug logging for chattr failures
Script Generation
- Escape special characters in sed replacements
- Use INSTALL_DIR placeholder instead of hardcoded path
History & Backup
- JSON field escaping for special characters
- Cross-platform date parsing (Python fallback)
- File locking for history rotation
- Backup temp file cleanup on interrupt
Restore
- Cleanup trap for credential temp files
- Sanitized restic error output
Scheduling
- Display "(unknown)" for missing schedules
- More precise cron removal pattern
- Document RandomizedDelaySec behavior
- Always regenerate service files
CLI
- Temp file cleanup on crash
- Validate --backup-id has value
- Unset arrays before re-declaration
- Symlink target verification before reinstall
Breaking Changes
- verify command: Removed
-qshortcut. Use--quickinstead.
Checksums
See SHA256SUMS for archive verification.
v3.1.2 - Security & Reliability Fixes
Security & Reliability Improvements for Updater Module
This release addresses 18 bugs in the updater module, including 1 critical, 5 high, 8 medium, and 4 low severity issues.
Critical Fix
- Missing lib modules in dev-update - Added 4 missing modules (
restic.sh,history.sh,jobs.sh,migration.sh) tolib_filesarray
Security Fixes
- Path traversal protection for tar extraction
- Symlink attack prevention (cache moved from
/tmpto~/.cache/backupd/) - TLS 1.2+ enforcement for all curl commands
- Regex injection prevention in checksum lookup
Reliability Improvements
- HTTP connectivity check (replaces ICMP ping blocked by firewalls)
- Download retry logic with 3 attempts and exponential backoff
- Backup validation before updates proceed
- Safe rollback with rename-before-delete pattern
- Atomic updates via staging directory
- Syntax validation for all lib files in dev updates
- JSON parsing with jq fallback for API responses
- Download timeouts to prevent hangs
- Race condition prevention with flock
- Pre-release version comparison fix
- API failure debug logging
Installation
curl -fsSL https://raw.githubusercontent.com/wnstify/backupd/main/install.sh | sudo bashUpgrade
sudo backupd --updateChecksums
See SHA256SUMS file for verification.
v3.1.1 - Patch Release
Patch Release
This patch release fixes installer issues introduced in v3.1.0.
Fixed
- Installer missing v3.1.0 modules - Added
history.sh,jobs.sh,migration.shto installer'sLIB_MODULESarray - Missing history.sh source - Added
history.shto backupd.sh library sources
Documentation
- Added comprehensive "Viewing Backup History" section to USAGE.md
- Added history and job commands to README.md CLI reference
- Expanded CHANGELOG.md with history command details
Upgrade
# Download and verify
curl -LO https://github.com/wnstify/backupd/releases/download/v3.1.1/backupd-v3.1.1.tar.gz
curl -LO https://github.com/wnstify/backupd/releases/download/v3.1.1/SHA256SUMS
sha256sum -c SHA256SUMS
# Extract and install
tar -xzf backupd-v3.1.1.tar.gz
cd backupd && sudo ./install.sh --upgradeFull Changelog: v3.1.0...v3.1.1
v3.1.0 - Multi-Job Support
What's New
Multi-Job Backup Management - Manage multiple independent backup jobs, each with its own configuration, scripts, and schedules.
Features
-
Job Management Commands
backupd job list- List all configured jobsbackupd job show <name>- Display job configuration and statusbackupd job create <name>- Create a new backup jobbackupd job delete <name>- Delete a job and its timersbackupd job clone <src> <dst>- Clone job configurationbackupd job run <name> [db|files|all]- Run backup for specific jobbackupd job enable/disable <name>- Enable or disable a jobbackupd job timers <name>- Show systemd timers for a job
-
Automatic Migration - Existing installations automatically migrate to "default" job
-
Job-Aware History - Track which job performed each backup
Backward Compatibility
All existing commands continue to work on the "default" job:
backupd backup dbuses default job configuration- Legacy systemd timer names preserved for default job
Full Changelog
See CHANGELOG.md for complete details.
SHA256 Checksum: fbe8f6c741c37177ab110c92ecdf76c40973e677a3b602ea8c1828bf7b26cf08