Files
Seg_Data_Server/Back_Up.sh
2026-05-20 15:05:35 +08:00

104 lines
3.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 ">>> 全部任务完成!"