Skip to content

Releases: wnstify/backupd

v3.2.4

19 Feb 17:22
Immutable release. Only release title and notes can be modified.
v3.2.4
6566be3

Choose a tag to compare

v3.2.3

19 Feb 14:32
Immutable release. Only release title and notes can be modified.
v3.2.3
38e4b9c

Choose a tag to compare

Full Changelog: v3.2.2...v3.2.3

v3.2.2 - Cron Fallback Scheduler & CLI Fixes

19 Feb 10:38
Immutable release. Only release title and notes can be modified.
v3.2.2
38b1724

Choose a tag to compare

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.sh module 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=1 and 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 variable error on script interrupt — changed trap from RETURN EXIT INT TERM to RETURN only
  • 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/files failing with "script not found" — uses unified restore.sh with RESTORE_TYPE env var
  • List Backups (BACKUPD-037): Fixed restore --list showing legacy rclone patterns — now queries restic snapshots --tag
  • Status Command (BACKUPD-037): Fixed status returning exit code 1 when log files have no matches — added || true to grep pipelines

Technical

  • New lib/scheduler.sh module (373 lines) with OnCalendar-to-cron conversion
  • Cron entries include nice -n 10 ionice -c3 for systemd parity
  • Generated scripts embed BACKUPD_CRON=1 check with random delay
  • scheduler.sh added to install.sh and updater.sh module lists

Checksums

See SHA256SUMS file for verification.

v3.2.1 - Schedule Templates, Bulk Operations & Signal Handling

09 Jan 18:32
Immutable release. Only release title and notes can be modified.
v3.2.1
f911d04

Choose a tag to compare

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 presets
    • backupd 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 jobs
    • backupd schedule --all disable - Disable all schedules
    • backupd 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.sh for EXIT, INT, TERM signals
  • Child process tracking with BACKUPD_CHILD_PIDS array
  • Improved validation for schedule template operations

Checksums

See SHA256SUMS file for verification.

v3.2.0 - Per-Job Scheduling & FlashPanel Support

09 Jan 16:58
Immutable release. Only release title and notes can be modified.
v3.2.0
93dba5c

Choose a tag to compare

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 --json

Features:

  • Support for all 4 backup types: db, files, verify, verify-full
  • Schedule validation with OnCalendar format checking
  • Conflict detection warns about overlapping schedules
  • --all flag 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 --update

Checksums

See SHA256SUMS for tarball verification.


Full Changelog: https://github.com/wnstify/backupd/blob/main/CHANGELOG.md

v3.1.4 - Multi-Distribution Support

09 Jan 12:49
Immutable release. Only release title and notes can be modified.
v3.1.4
86d7c69

Choose a tag to compare

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 fallback
  • fetch_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 bash

Verification

# Verify SHA256
sha256sum -c SHA256SUMS

# Expected hash
bd0fd95b1acc74462824e743bd61dd5b34185bc161464e9872c30eb1653265f4  backupd-v3.1.4.tar.gz

v3.1.3 - Bug Fixes

09 Jan 11:51
Immutable release. Only release title and notes can be modified.
v3.1.3
9794aa3

Choose a tag to compare

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 -q shortcut. Use --quick instead.

Checksums

See SHA256SUMS for archive verification.

v3.1.2 - Security & Reliability Fixes

08 Jan 07:23
Immutable release. Only release title and notes can be modified.
v3.1.2
c416a8d

Choose a tag to compare

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) to lib_files array

Security Fixes

  • Path traversal protection for tar extraction
  • Symlink attack prevention (cache moved from /tmp to ~/.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 bash

Upgrade

sudo backupd --update

Checksums

See SHA256SUMS file for verification.

v3.1.1 - Patch Release

07 Jan 19:04
Immutable release. Only release title and notes can be modified.
v3.1.1
2e1c92c

Choose a tag to compare

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.sh to installer's LIB_MODULES array
  • Missing history.sh source - Added history.sh to 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 --upgrade

Full Changelog: v3.1.0...v3.1.1

v3.1.0 - Multi-Job Support

07 Jan 18:38
Immutable release. Only release title and notes can be modified.
v3.1.0
cd85a5e

Choose a tag to compare

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 jobs
    • backupd job show <name> - Display job configuration and status
    • backupd job create <name> - Create a new backup job
    • backupd job delete <name> - Delete a job and its timers
    • backupd job clone <src> <dst> - Clone job configuration
    • backupd job run <name> [db|files|all] - Run backup for specific job
    • backupd job enable/disable <name> - Enable or disable a job
    • backupd 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 db uses default job configuration
  • Legacy systemd timer names preserved for default job

Full Changelog

See CHANGELOG.md for complete details.


SHA256 Checksum: fbe8f6c741c37177ab110c92ecdf76c40973e677a3b602ea8c1828bf7b26cf08