#!/bin/bash # Calibre Library Backup Script # This script backs up the Calibre Library to a network share # Configuration SOURCE_DIR="/home/acedanger/Calibre Library/" DEST_DIR="/mnt/share/media/books/" LOG_FILE="/var/log/calibre-backup.log" # Function to log messages with timestamp log_message() { echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE" } # Check if source directory exists if [ ! -d "$SOURCE_DIR" ]; then log_message "ERROR: Source directory does not exist: $SOURCE_DIR" exit 1 fi # Check if destination directory is accessible if [ ! -d "$DEST_DIR" ]; then log_message "ERROR: Destination directory not accessible: $DEST_DIR" log_message "Make sure the network share is mounted" exit 1 fi # Start backup log_message "Starting Calibre Library backup..." 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 log_message "Backup completed successfully" exit 0 else log_message "ERROR: Backup failed with exit code $?" exit 1 fi