cleaned up rsync.sh
This commit is contained in:
+19
-34
@@ -1,17 +1,14 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
#-----------------------------------------------------------------------------------------------
|
||||
# Main Rsync Script for unRAID
|
||||
#-----------------------------------------------------------------------------------------------
|
||||
|
||||
#---------------------------------------------
|
||||
# ---------------------------------------------------------------------------------
|
||||
# -------------------------- Rsync Script Using Master.conf ------------------------
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
# Detect script directory
|
||||
#---------------------------------------------
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
#---------------------------------------------
|
||||
# Load Master.conf (hosts, keys, profiles, helpers)
|
||||
#---------------------------------------------
|
||||
# Load Master.conf
|
||||
MASTER_CONF="$SCRIPT_DIR/../Master.conf"
|
||||
if [ -f "$MASTER_CONF" ]; then
|
||||
source "$MASTER_CONF"
|
||||
@@ -21,28 +18,22 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#---------------------------------------------
|
||||
# Input Arguments: Directory (positional)
|
||||
#---------------------------------------------
|
||||
# ----------------------------- Parse Input Arguments -----------------------------
|
||||
DIRECTORY="$1"
|
||||
if [[ -z "$DIRECTORY" ]]; then
|
||||
echo "Usage: $0 <directory-to-sync> [--dry-run|-n] [VAR=value ...]"
|
||||
echo "Usage: $0 <directory-to-sync> [--dry-run] [VAR=value ...]"
|
||||
exit 1
|
||||
fi
|
||||
shift 1 # Remove directory from $@ so parse_args sees only options/VARs
|
||||
shift 1
|
||||
|
||||
#---------------------------------------------
|
||||
# Parse optional arguments (dry-run / VAR=VALUE)
|
||||
#---------------------------------------------
|
||||
parse_args "$@"
|
||||
# Handle optional flags & variable overrides
|
||||
parse_args "$DIRECTORY" "$@"
|
||||
|
||||
echo "Detected profile: $(basename "$DIRECTORY" | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
#---------------------------------------------
|
||||
# Apply profile defaults or fallback to Master.conf
|
||||
#---------------------------------------------
|
||||
# -------------------------- Determine Profile & Settings -------------------------
|
||||
PROFILE_NAME=$(basename "$DIRECTORY" | tr '[:upper:]' '[:lower:]')
|
||||
echo "Detected profile: $PROFILE_NAME"
|
||||
|
||||
# Profile-specific settings with fallback to global defaults
|
||||
MAX_RSYNC_PROCS=${PROFILE_MAX_PROCS[$PROFILE_NAME]:-$MAX_RSYNC_PROCS}
|
||||
BW_LIMIT=${PROFILE_BW_LIMIT[$PROFILE_NAME]:-$BW_LIMIT}
|
||||
CRITICAL_CONTAINER_NAMES=(${PROFILE_CRITICAL_CONTAINER_NAMES[$PROFILE_NAME]})
|
||||
@@ -54,9 +45,7 @@ EXCLUDE_DIRS=(${PROFILE_EXCLUDE_DIRS[$PROFILE_NAME]:-${EXCLUDE_DIRS[@]}})
|
||||
|
||||
echo "Settings: MAX_RSYNC_PROCS=$MAX_RSYNC_PROCS, BW_LIMIT=$BW_LIMIT, CONTAINERS=${CRITICAL_CONTAINER_NAMES[*]}, EXCLUDES=${EXCLUDE_DIRS[*]}"
|
||||
|
||||
#---------------------------------------------
|
||||
# Dependency check
|
||||
#---------------------------------------------
|
||||
# --------------------------- Dependency Check ------------------------------------
|
||||
for cmd in rsync ssh ping timeout docker tailscale; do
|
||||
command -v "$cmd" >/dev/null 2>&1 || {
|
||||
echo "Error: Required command '$cmd' is not installed."
|
||||
@@ -66,9 +55,10 @@ done
|
||||
|
||||
trap 'echo "Script interrupted. Exiting."; exit 130' INT TERM
|
||||
|
||||
#---------------------------------------------
|
||||
# Helper Functions
|
||||
#---------------------------------------------
|
||||
# ---------------------------------------------------------------------------------
|
||||
# ------------------------- RUNTIME LOGIC (DO NOT MODIFY) -------------------------
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
wait_for_rsync() {
|
||||
for attempt in $(seq 1 "$RETRY_COUNT"); do
|
||||
RSYNC_COUNT=$(pgrep -fc "rsync.*root@${REMOTE_SERVER}" || true)
|
||||
@@ -114,9 +104,6 @@ start_containers() {
|
||||
done
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
# Main sync logic
|
||||
#---------------------------------------------
|
||||
main() {
|
||||
echo "[$LOCAL_SERVER_NAME] Syncing $DIRECTORY → $REMOTE_SERVER:$DIRECTORY"
|
||||
|
||||
@@ -173,7 +160,5 @@ main() {
|
||||
echo "[$LOCAL_SERVER_NAME] Sync complete."
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
# Execute
|
||||
#---------------------------------------------
|
||||
# Execute main
|
||||
main
|
||||
Reference in New Issue
Block a user