From f88cba76bb90ad74b9ba3edb213aeafda7062774 Mon Sep 17 00:00:00 2001 From: zaphod-black Date: Sat, 1 Nov 2025 19:13:08 -0500 Subject: [PATCH] Fix hybrid backups to run full backup when triggered manually MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PROBLEM: - User configured hybrid backup mode (files + block device) - Manual "Run backup now" only did file backup, not block device - Block device backups only ran on Sunday (day 7) - User couldn't test full backup without waiting until Sunday SOLUTION: - Modified backup.sh to accept optional "yes" argument to force full backup - Created new systemd service: pbs-backup-manual.service - Calls backup.sh with "yes" argument - Forces both file AND block device backup regardless of day - Updated backup script logic: - If FORCE_FULL="yes" -> always do block device backup - Else if Sunday -> do block device backup - Else -> skip block device backup - Updated both manual backup triggers: - Post-install "Run backup now" prompt - Menu option 4 "Run backup now" - Both now use pbs-backup-manual.service BEHAVIOR: - Scheduled backups (via timer): Files daily, block device weekly on Sunday - Manual backups (via menu): Files + block device ALWAYS (full backup) FILES CHANGED: - Added FORCE_FULL parameter to backup.sh - Modified "both" case to check FORCE_FULL first - Created pbs-backup-manual.service systemd unit - Updated run_backup_now() to use manual service - Updated menu option 4 handler to use manual service 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- pbs-client-installer.sh | 56 +++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/pbs-client-installer.sh b/pbs-client-installer.sh index 1c69ce4..5e8c8dd 100755 --- a/pbs-client-installer.sh +++ b/pbs-client-installer.sh @@ -784,6 +784,9 @@ EOF #!/bin/bash set -e +# Check if forcing full backup (for manual runs) +FORCE_FULL="${1:-no}" + # Load configuration source /etc/proxmox-backup-client/config @@ -884,13 +887,16 @@ case "$BACKUP_TYPE" in both) # Do file backup first (faster, more frequent) backup_files || BACKUP_SUCCESS=false - - # Only do block device backup on Sunday (weekly) - if [ "$(date +%u)" -eq 7 ]; then + + # Do block device backup on Sunday OR if manually forced + if [ "$FORCE_FULL" = "yes" ]; then + log "Manual full backup - including block device" + backup_block_device || BACKUP_SUCCESS=false + elif [ "$(date +%u)" -eq 7 ]; then log "Weekly block device backup day (Sunday)" backup_block_device || BACKUP_SUCCESS=false else - log "Skipping block device backup (runs weekly on Sunday)" + log "Skipping block device backup (runs weekly on Sunday, or use 'Run backup now' for immediate full backup)" fi ;; *) @@ -917,7 +923,7 @@ EOFSCRIPT chmod 700 "$CONFIG_DIR/backup.sh" - # Create systemd service file + # Create systemd service file (for scheduled backups) cat > /etc/systemd/system/pbs-backup.service < /etc/systemd/system/pbs-backup-manual.service < /etc/systemd/system/pbs-backup.timer <