#!/bin/bash # ============================================================================================== # ============================= Conf Cache Save ================================================ # ============================================================================================== # # PURPOSE # ───────────────────────────────────────────────────────────────────────────── # Snapshots the partner conf RAM cache to /boot/config/.cache/vv/d/ on # array stop. Survives reboot. Used by conf_cache_restore.sh at next array start # to reload partner vars into RAM when the partner is unreachable at boot time. # # Runs as the first step in ARRAY_STOP_SCRIPTS — while the RAM cache is fresh # and before anything else changes. If partner is reachable at next start, # conf_sync.sh gets a fresh copy and the backup is never used. If partner is # down, the backup fills the gap so fallback.sh has the vars it needs. # # Only partner confs are saved — own conf is always on disk. # Location is outside the git repo and outside the main plugin folder. # ============================================================================================== SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../load_config.sh" parse_args "$@" detect_hosts require_partnership RAM_CACHE="/tmp/.cache/vv/d" SAVE_DIR="/boot/config/.cache/vv/d" [[ "$DRY_RUN" == true ]] && warn "DRY RUN — no files will be written" if [[ ! -d "$RAM_CACHE" ]]; then log "No RAM conf cache found — nothing to save" exit 0 fi saved=0 for conf in "$RAM_CACHE"/host*.conf; do [[ -f "$conf" ]] || continue base="$(basename "$conf")" [[ "${base,,}" == "${MY_ID,,}.conf" ]] && continue if [[ "$DRY_RUN" == true ]]; then warn "DRY RUN — would save $base → $SAVE_DIR/" (( saved++ )) continue fi mkdir -p "$SAVE_DIR" if cp "$conf" "$SAVE_DIR/$base"; then echo "Saved $base → $SAVE_DIR ✅" (( saved++ )) else warn "Failed to save $base" fi done if [[ "$saved" -eq 0 ]]; then log "No partner confs in RAM cache — nothing saved" else echo "Conf cache saved: $saved partner conf(s) → $SAVE_DIR" fi