From 2065c6f6f36303788773cfc313fa699757eec858 Mon Sep 17 00:00:00 2001 From: Peter Wood Date: Wed, 25 Mar 2026 21:15:43 -0400 Subject: [PATCH] fix(backup-calibre): use SCRIPT_DIR log path, fix rsync exit code capture, add set -e --- backup-calibre.sh | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/backup-calibre.sh b/backup-calibre.sh index de5965d..90a7d2f 100755 --- a/backup-calibre.sh +++ b/backup-calibre.sh @@ -3,10 +3,17 @@ # Calibre Library Backup Script # This script backs up the Calibre Library to a network share +set -e + # Configuration +SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" SOURCE_DIR="/home/acedanger/Calibre Library/" DEST_DIR="/mnt/share/media/books/" -LOG_FILE="/var/log/calibre-backup.log" +LOG_DIR="$SCRIPT_DIR/logs" +LOG_FILE="$LOG_DIR/calibre-backup.log" + +# Ensure log directory exists +mkdir -p "$LOG_DIR" # Function to log messages with timestamp log_message() { @@ -32,10 +39,17 @@ log_message "Source: $SOURCE_DIR" log_message "Destination: $DEST_DIR" # Perform the backup using rsync -if rsync -rtvp --delete --exclude="*.tmp" "$SOURCE_DIR" "$DEST_DIR" 2>&1 | tee -a "$LOG_FILE"; then +# Use a temp file to capture output while preserving rsync's exit code +RSYNC_TMP=$(mktemp) +if rsync -rtvp --delete --exclude="*.tmp" "$SOURCE_DIR" "$DEST_DIR" > "$RSYNC_TMP" 2>&1; then + cat "$RSYNC_TMP" | tee -a "$LOG_FILE" log_message "Backup completed successfully" + rm -f "$RSYNC_TMP" exit 0 else - log_message "ERROR: Backup failed with exit code $?" - exit 1 + RSYNC_EXIT=$? + cat "$RSYNC_TMP" | tee -a "$LOG_FILE" + log_message "ERROR: Backup failed with exit code $RSYNC_EXIT" + rm -f "$RSYNC_TMP" + exit $RSYNC_EXIT fi \ No newline at end of file