#!/bin/bash # ----------------------------------------------------------------------------------------------- # --------------------------------- Daily Sync Orchestrator ------------------------------------ # ----------------------------------------------------------------------------------------------- # Runs all bulk media shares sequentially. Scheduled via unRAID User Scripts plugin at 1am. # Per-share rsync handled by rsync.sh — this script tracks pass/fail and total time only. # Add or remove shares in Master.conf under DAILY_SYNC_SHARES. # ----------------------------------------------------------------------------------------------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../Master.conf" source "$SCRIPT_DIR/../common.sh" RSYNC_SCRIPT="$SCRIPT_DIR/../Rsync/rsync.sh" # ----------------------------------------------------------------------------------------------- # Tracking # ----------------------------------------------------------------------------------------------- PASS=() FAIL=() SHARE_TIMES=() TOTAL_START=$(date +%s) # ----------------------------------------------------------------------------------------------- # Run # ----------------------------------------------------------------------------------------------- echo "" echo "$ICON_SYNC Daily Sync Starting — $(date '+%Y-%m-%d %H:%M:%S')" echo "Shares: ${#DAILY_SYNC_SHARES[@]}" echo "" for SHARE in "${DAILY_SYNC_SHARES[@]}"; do SHARE_NAME=$(basename "$SHARE") SHARE_START=$(date +%s) echo "----------------------------------------" info "Syncing $SHARE_NAME..." echo "----------------------------------------" if bash "$RSYNC_SCRIPT" "$SHARE"; then SHARE_END=$(date +%s) SHARE_TIMES+=("$SHARE_NAME:$((SHARE_END - SHARE_START))") PASS+=("$SHARE_NAME") else SHARE_END=$(date +%s) SHARE_TIMES+=("$SHARE_NAME:$((SHARE_END - SHARE_START))") FAIL+=("$SHARE_NAME") error "$SHARE_NAME failed — continuing to next share" fi echo "" done TOTAL_END=$(date +%s) TOTAL_DURATION=$((TOTAL_END - TOTAL_START)) # ----------------------------------------------------------------------------------------------- # Summary # ----------------------------------------------------------------------------------------------- echo "===== DAILY SYNC SUMMARY =====" echo "Started: $(date -d @$TOTAL_START '+%Y-%m-%d %H:%M:%S')" echo "Finished: $(date -d @$TOTAL_END '+%Y-%m-%d %H:%M:%S')" echo "" for entry in "${SHARE_TIMES[@]}"; do SHARE_NAME="${entry%%:*}" DURATION="${entry##*:}" if printf '%s\n' "${FAIL[@]}" | grep -qx "$SHARE_NAME"; then echo " $ICON_ERROR $SHARE_NAME — $(format_duration $DURATION)" else echo " $ICON_SUCCESS $SHARE_NAME — $(format_duration $DURATION)" fi done echo "" echo " Passed: ${#PASS[@]}/${#DAILY_SYNC_SHARES[@]}" echo " Failed: ${#FAIL[@]}/${#DAILY_SYNC_SHARES[@]}" echo " Duration: $(format_duration $TOTAL_DURATION)" echo "==============================" [[ ${#FAIL[@]} -gt 0 ]] && exit 1 exit 0