Skip to content

Releases: wnstify/backupd

v3.2.4

Choose a tag to compare

@github-actions github-actions released this 19 Feb 17:22
Immutable release. Only release title and notes can be modified.
v3.2.4
6566be3

Full Changelog: v3.2.3...v3.2.4

v3.2.3

Choose a tag to compare

@github-actions github-actions released this 19 Feb 14:32
Immutable release. Only release title and notes can be modified.
v3.2.3
38e4b9c

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

v3.2.2 - Cron Fallback Scheduler & CLI Fixes

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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

Choose a tag to compare

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

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