feat: 优化 Sub2API 安装脚本以支持安全更新和重装确认

- 增加检测已有安装的功能,避免覆盖数据库配置
- 提供用户选择:仅更新或强制重装,重装时需确认以防数据丢失
- 更新用户提示信息,增强交互体验
This commit is contained in:
eddy
2026-07-02 03:44:45 +08:00
parent 37ccdafc23
commit 5a4bf5549c
+22 -2
View File
@@ -10,14 +10,24 @@ port80=8230
install_dir=/root/data/docker_data/Sub2API install_dir=/root/data/docker_data/Sub2API
update_script="$install_dir/auto-update.sh" update_script="$install_dir/auto-update.sh"
# 交互:选择安装或仅执行 Docker 更新 # 交互:已有安装时默认只更新,避免覆盖数据库账号、密码和连接配置
existing_install=0
if [ -f "$install_dir/docker-compose.yml" ]; then
existing_install=1
fi
echo "请选择操作:" echo "请选择操作:"
if [ "$existing_install" -eq 1 ]; then
echo " 1) 已安装,仅更新 Sub2API app 镜像(默认,安全,不覆盖配置/数据库)"
echo " 2) 强制重装 Sub2API(危险,会重写 docker-compose.yml"
else
echo " 1) 安装 Sub2API(默认)" echo " 1) 安装 Sub2API(默认)"
echo " 2) 不安装,立即执行 Docker 更新" echo " 2) 不安装,立即执行 Docker 更新"
fi
read -r -p "请输入选项 [1/2](默认 1):" action_choice read -r -p "请输入选项 [1/2](默认 1):" action_choice
action_choice="${action_choice:-1}" action_choice="${action_choice:-1}"
if [ "$action_choice" = "2" ]; then if { [ "$existing_install" -eq 1 ] && [ "$action_choice" = "1" ]; } || { [ "$existing_install" -eq 0 ] && [ "$action_choice" = "2" ]; }; then
echo "已选择:立即执行 Docker 更新。" echo "已选择:立即执行 Docker 更新。"
if [ -x "$update_script" ]; then if [ -x "$update_script" ]; then
"$update_script" "$update_script"
@@ -43,6 +53,16 @@ if [ "$action_choice" = "2" ]; then
exit 0 exit 0
fi fi
if [ "$existing_install" -eq 1 ] && [ "$action_choice" = "2" ]; then
echo "检测到已有 Sub2API 安装:$install_dir/docker-compose.yml"
echo "强制重装会覆盖 docker-compose.yml,可能导致数据库账号、密码或连接配置被重置。"
read -r -p "如确需重装,请输入 REINSTALL 确认:" reinstall_confirm
if [ "$reinstall_confirm" != "REINSTALL" ]; then
echo "未确认强制重装,已退出。原有配置未修改。"
exit 0
fi
fi
# 1、更新包(更新失败不阻断后续安装) # 1、更新包(更新失败不阻断后续安装)
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive