first commit
This commit is contained in:
104
Back_Up.sh
Normal file
104
Back_Up.sh
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/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 ">>> 全部任务完成!"
|
||||
Reference in New Issue
Block a user