diff --git a/Rsync/rsync.sh b/Rsync/rsync.sh index 89cae40..1e352d7 100644 --- a/Rsync/rsync.sh +++ b/Rsync/rsync.sh @@ -32,6 +32,13 @@ RETRY_COUNT=${PROFILE_RETRY_COUNT[$PROFILE_NAME]:-$RETRY_COUNT} SLEEP=${PROFILE_SLEEP[$PROFILE_NAME]:-$SLEEP} EXCLUDE_DIRS=(${PROFILE_EXCLUDE_DIRS[$PROFILE_NAME]:-${EXCLUDE_DIRS[@]}}) +# ----------------------------- Status Mode ----------------------------- +if [[ "$SHOW_STATUS" == true ]]; then + show_status + exit 0 +fi + + # ----------------------------- User Info ----------------------------- echo "============================================================" echo " Sync Job Starting" diff --git a/common.sh b/common.sh index c144916..85f6b4a 100644 --- a/common.sh +++ b/common.sh @@ -4,7 +4,6 @@ # ----------------------------------------------------------------------------------------------- # ----------------------------- Output Helpers ----------------------------- - info() { echo "[INFO] $*" } @@ -22,7 +21,6 @@ log() { } # ----------------------------- Argument Parsing ----------------------------- - parse_args() { DRY_RUN=${DRY_RUN:-false} ENABLE_LOGGING=${ENABLE_LOGGING:-false} @@ -66,6 +64,10 @@ parse_args() { --no-log) ENABLE_LOGGING=false ;; + --status|--summary) + SHOW_STATUS=true + ;; + ;; --help|-h) echo "Usage: script [--dry-run|-n] [--log] [LOG=true] [VAR=value ...]" exit 0 @@ -79,7 +81,6 @@ parse_args() { } # ----------------------------- Validation ----------------------------- - require_var() { local var="$1" if [[ -z "${!var:-}" ]]; then @@ -99,7 +100,6 @@ validate_int() { } # ----------------------------- Host Detection ----------------------------- - detect_hosts() { LOCAL_HOSTNAME="$(hostname)" @@ -131,7 +131,6 @@ detect_hosts() { } # ----------------------------- Remote IP ----------------------------- - resolve_remote_ip() { log "Resolving Tailscale IP for $REMOTE_SERVER_NAME..." @@ -146,14 +145,12 @@ resolve_remote_ip() { } # ----------------------------- Connectivity ----------------------------- - check_remote_online() { log "Pinging $REMOTE_SERVER..." ping -c 1 "$REMOTE_SERVER" &>/dev/null } # ----------------------------- Containers ----------------------------- - declare -a RUNNING_CONTAINERS=() stop_containers() { @@ -201,7 +198,6 @@ start_containers() { } # ----------------------------- Rsync Options ----------------------------- - get_rsync_opts() { if [[ -n "${PROFILE_RSYNC_OPTS[$PROFILE_NAME]:-}" ]]; then read -r -a RSYNC_OPTS <<< "${PROFILE_RSYNC_OPTS[$PROFILE_NAME]}" @@ -210,4 +206,31 @@ get_rsync_opts() { RSYNC_OPTS=("${DEFAULT_RSYNC_OPTS[@]}") log "Using default rsync options: ${DEFAULT_RSYNC_OPTS[*]}" fi +} + +# ----------------------------- Status Output ----------------------------- +show_status() { + echo "===== RSYNC STATUS =====" + echo "Local: $LOCAL_SERVER_NAME" + echo "Remote: $REMOTE_SERVER_NAME" + echo "Remote IP: $REMOTE_SERVER" + echo "SSH Key: $SSH_KEY" + echo + echo "Directory: $DIRECTORY" + echo "Profile: $PROFILE_NAME" + echo + echo "Max Procs: $MAX_RSYNC_PROCS" + echo "Bandwidth: $BW_LIMIT KB/s" + echo "Retries: $RETRY_COUNT" + echo "Sleep: $SLEEP" + echo "Dry Run: $DRY_RUN" + echo + echo "Containers: ${CRITICAL_CONTAINER_NAMES[*]:-(none)}" + echo "Delayed: ${DELAYED_CONTAINERS[*]:-(none)}" + echo + echo "Excludes: ${EXCLUDE_DIRS[*]:-(none)}" + echo + echo "Rsync Opts:" + printf ' %s\n' "${RSYNC_OPTS[@]}" + echo "=========================" } \ No newline at end of file