From 766e53c172a0f684e6da32ba326ccd0fcbb20ff6 Mon Sep 17 00:00:00 2001 From: FailedProxy Date: Fri, 27 Mar 2026 19:00:00 +0000 Subject: [PATCH] test --- Rsync/rsync.sh | 124 ++++++++++++++++++++++++------------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/Rsync/rsync.sh b/Rsync/rsync.sh index 0fbe7ae..68ef9b3 100644 --- a/Rsync/rsync.sh +++ b/Rsync/rsync.sh @@ -11,50 +11,67 @@ set -e BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$BASE_DIR" -# ---------------------------------------------------------------------------------------------- -# Load configs (Master.conf) -# ---------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- +# MASTER CONF (must exist) +# ----------------------------------------------------------------------------- if [[ -f "$SCRIPT_DIR/../Master.conf" ]]; then source "$SCRIPT_DIR/../Master.conf" else - echo "❌ [ERROR] Master.conf not found" + echo "❌ Master.conf missing" exit 1 fi -# ---------------------------------------------------------------------------------------------- -# Load common.sh safely (MULTI-PATH FIX) -# ---------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- +# SAFE SOURCE FUNCTION (CRITICAL FIX) +# ----------------------------------------------------------------------------- +safe_source() { + local file="$1" + + if [[ -f "$file" ]]; then + # shellcheck disable=SC1090 + source "$file" || { + echo "❌ FAILED sourcing: $file" + return 1 + } + return 0 + fi + + return 1 +} + +# ----------------------------------------------------------------------------- +# LOAD common.sh (STRICT VALIDATION) +# ----------------------------------------------------------------------------- COMMON_LOADED=false -COMMON_CANDIDATES=( +COMMON_PATHS=( "$SCRIPT_DIR/../common.sh" "$SCRIPT_DIR/common.sh" "/mnt/user/appdata/unraid_scripts/common.sh" - "/mnt/user/appdata/unraid_scripts/Rsync/common.sh" ) -for c in "${COMMON_CANDIDATES[@]}"; do - if [[ -f "$c" ]]; then - source "$c" +for f in "${COMMON_PATHS[@]}"; do + if safe_source "$f"; then COMMON_LOADED=true break fi done -# ---------------------------------------------------------------------------------------------- -# Fallback logging (ONLY if common.sh not loaded) -# ---------------------------------------------------------------------------------------------- -if [[ "$COMMON_LOADED" != true ]]; then +# ----------------------------------------------------------------------------- +# HARD CHECK (THIS PREVENTS YOUR ERROR) +# ----------------------------------------------------------------------------- +if ! declare -F log_info >/dev/null 2>&1; then + echo "⚠️ [WARN] log_info not found — forcing fallback logger" + log_info() { echo "ℹ️ [INFO] $*"; } log_ok() { echo "✅ [OK] $*"; } log_warn() { echo "⚠️ [WARN] $*"; } log_error() { echo "❌ [ERROR] $*"; } - log_warn "common.sh not found — using fallback logger" fi -# ---------------------------------------------------------------------------------------------- -# Init -# ---------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- +# INIT +# ----------------------------------------------------------------------------- log_info "Sync script initialized" LOCAL_HOST="$(hostname)" @@ -62,23 +79,21 @@ REMOTE_HOST="${REMOTE_HOST:-jayred365}" log_info "Host: ${LOCAL_HOST} → ${REMOTE_HOST}" -# ---------------------------------------------------------------------------------------------- -# Resolve remote IP -# ---------------------------------------------------------------------------------------------- -log_info "Resolving remote IP..." - +# ----------------------------------------------------------------------------- +# RESOLVE REMOTE +# ----------------------------------------------------------------------------- REMOTE_IP="$(getent hosts "$REMOTE_HOST" | awk '{print $1}' || true)" if [[ -z "$REMOTE_IP" ]]; then - log_error "Failed to resolve remote host: $REMOTE_HOST" + log_error "Remote resolve failed" exit 1 fi log_info "Remote IP: $REMOTE_IP" -# ---------------------------------------------------------------------------------------------- -# Profile + paths -# ---------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- +# CONFIG +# ----------------------------------------------------------------------------- PROFILE="${1:-arrs_stack}" SOURCE_PATH="${SOURCE_PATH:-/mnt/user/appdata-Failover/Arrs_Stack}" @@ -86,56 +101,41 @@ REMOTE_PATH="${REMOTE_PATH:-/mnt/user/appdata-Failover/Arrs_Stack}" REMOTE_USER="${REMOTE_USER:-root}" log_info "Sync Starting" -log_info "Source: $SOURCE_PATH" -log_info "Remote: $REMOTE_IP:$REMOTE_PATH" -log_info "Profile: $PROFILE" -log_info "Dry Run: ${DRY_RUN:-false}" -# ---------------------------------------------------------------------------------------------- -# Remote check -# ---------------------------------------------------------------------------------------------- -log_info "Checking remote..." - -if ! ssh -o BatchMode=yes -o ConnectTimeout=5 \ - "${REMOTE_USER}@${REMOTE_IP}" "echo ok" >/dev/null 2>&1; then - log_error "Remote unreachable" - exit 1 -fi +# ----------------------------------------------------------------------------- +# SSH CHECK +# ----------------------------------------------------------------------------- +ssh -o BatchMode=yes -o ConnectTimeout=5 \ + "${REMOTE_USER}@${REMOTE_IP}" "echo ok" >/dev/null 2>&1 log_ok "Remote reachable" -# ---------------------------------------------------------------------------------------------- -# Stop containers (optional) -# ---------------------------------------------------------------------------------------------- -if declare -f stop_containers >/dev/null 2>&1; then +# ----------------------------------------------------------------------------- +# CONTAINERS +# ----------------------------------------------------------------------------- +if declare -F stop_containers >/dev/null 2>&1; then log_info "Stopping containers..." stop_containers "$PROFILE" || true fi -# ---------------------------------------------------------------------------------------------- -# RSYNC EXECUTION -# ---------------------------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- +# RSYNC +# ----------------------------------------------------------------------------- log_info "Running rsync..." -RSYNC_OPTS="-aHAX --delete --numeric-ids" - -if [[ "${DRY_RUN:-false}" == "true" ]]; then - RSYNC_OPTS="$RSYNC_OPTS -n" -fi - -rsync $RSYNC_OPTS \ +rsync -aHAX --delete --numeric-ids \ -e "ssh" \ "$SOURCE_PATH/" \ "${REMOTE_USER}@${REMOTE_IP}:${REMOTE_PATH}/" log_ok "Rsync complete" -# ---------------------------------------------------------------------------------------------- -# Start containers (optional) -# ---------------------------------------------------------------------------------------------- -if declare -f start_containers >/dev/null 2>&1; then +# ----------------------------------------------------------------------------- +# START CONTAINERS +# ----------------------------------------------------------------------------- +if declare -F start_containers >/dev/null 2>&1; then log_info "Starting containers..." start_containers "$PROFILE" || true fi -log_ok "Sync finished successfully" \ No newline at end of file +log_ok "Sync finished" \ No newline at end of file