#!/usr/bin/env bash
# sync_interactive.sh  —— 交互式同步脚本 (v3)
# 脚本会自动以其自身所在的位置为根目录，并提供不同的同步备份模式。

set -euo pipefail

# --- 根目录设置 ---
# 获取脚本文件所在的绝对路径，并将其作为所有操作的根目录
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )


# --- 配置区域 ---
# 算法源目录 (路径基于脚本位置)
SRC_DIRS=(
  "$SCRIPT_DIR/Seg_All_In_One_YoloModel"
  "$SCRIPT_DIR/Seg_All_In_One_SegModel"
  "$SCRIPT_DIR/Seg_All_In_One_MMSeg"
  "$SCRIPT_DIR/Seg_All_In_One_Analysis"
)
# 本地镜像/中转目录 (路径基于脚本位置)
LOCAL_DST_ROOT="$SCRIPT_DIR/Hardisk"
# NAS备份目标目录 (路径基于脚本位置)
NAS_DST_ROOT="$SCRIPT_DIR/Nas_BackUp_Seg"


# --- 用户选择操作 ---
echo "--- 请选择要执行的同步操作 ---"
echo "  1. [更新并备份算法文件]   从源头更新算法文件到Hardisk，并立即备份到NAS"
echo "  2. [备份Hardisk]       将整个Hardisk目录的当前内容，完全拷贝到NAS【--delete】"
echo "  3. [退出]                 不执行任何操作"
echo "------------------------------------------------"

read -p "请输入选项 [1, 2, 或 3]: " choice

case $choice in
    1)
        echo "--- 您选择了 [1]: 更新并备份算法文件 (源->Hardisk->NAS) ---"
        
        # --- 第 1 步: 从源目录更新文件到 Hardisk ---
        echo ""
        echo "--> (1/2) 正在从源目录更新文件到 $LOCAL_DST_ROOT..."
        for src_path in "${SRC_DIRS[@]}"; do
            if [ ! -d "$src_path" ]; then
                echo "  警告: 源目录 '$src_path' 不存在，已跳过。"
                continue
            fi
            
            dst_dir_name=$(basename "$src_path")
            dst_path=$(mkdir -p "$LOCAL_DST_ROOT/$dst_dir_name" && realpath "$LOCAL_DST_ROOT/$dst_dir_name")
            
            echo "  >>> 正在同步 $src_path -> $dst_path"
            rsync -avh --delete "$src_path/" "$dst_path/"
        done
        echo "--> (1/2) 本地 Hardisk 更新完成。"
        
        # --- 第 2 步: 从 Hardisk 备份到 NAS ---
        echo ""
        echo "--> (2/2) 正在将更新后的算法文件从 Hardisk 备份到 $NAS_DST_ROOT..."
        for dir_full_path in "${SRC_DIRS[@]}"; do
            dir_name=$(basename "$dir_full_path")
            src_from_hardisk="$LOCAL_DST_ROOT/$dir_name"
            dst_to_nas="$NAS_DST_ROOT/$dir_name"

            if [ ! -d "$src_from_hardisk" ]; then
                echo "  警告: 源目录 '$src_from_hardisk' 在 Hardisk 中不存在，已跳过备份。"
                continue
            fi
            
            mkdir -p "$dst_to_nas"
            dst_path_final=$(realpath "$dst_to_nas")

            echo "  >>> 正在备份 $src_from_hardisk -> $dst_path_final"
            rsync -avh --delete "$src_from_hardisk/" "$dst_path_final/"
        done
        echo "--> (2/2) 指定的算法文件已成功备份到 NAS！"
        ;;
    2)
        echo "--- 您选择了 [2]: 仅备份Hardisk (Hardisk->NAS) ---"
        src="$LOCAL_DST_ROOT/"
        dst="$NAS_DST_ROOT/"

        if [ ! -d "$src" ]; then
            echo "错误: 源目录 '$src' 不存在，无法继续。"
            exit 1
        fi
        
        mkdir -p "$dst"
        
        echo ">>> 正在将 $src 的全部内容备份到 $dst"
        rsync -avh --delete "$src" "$dst" # 使用增量复制
        echo ">>> Hardisk 目录已完全备份到 NAS！"
        ;;
    3)
        echo "--- 您选择了 [3]: 退出 ---"
        echo "操作已取消。"
        ;;
    *)
        echo "无效选项 '$choice'。请输入 1, 2, 或 3。"
        exit 1
        ;;
esac

echo ""
echo ">>> 全部任务完成！"