feat: install.sh 支持升级模式,自动识别已有安装,保留配置和数据

This commit is contained in:
tian 2026-07-23 18:10:46 +08:00
parent e411385718
commit b73ccdefed

View File

@ -1,5 +1,5 @@
#!/bin/bash
# SafeSight Control 一键安装脚本
# SafeSight Control 一键安装/升级脚本
# 用法: sudo bash install.sh
set -e
@ -11,8 +11,16 @@ fi
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_DIR="${1:-/opt/safesightd}"
ARCH=$(uname -m)
UPGRADE=false
echo "========== SafeSight Control 安装 =========="
if [ -f "$INSTALL_DIR/bin/safesightd" ]; then
UPGRADE=true
echo "========== SafeSight Control 升级 =========="
echo "检测到已有安装,将保留数据库和配置文件"
systemctl stop safesightd 2>/dev/null || true
else
echo "========== SafeSight Control 安装 =========="
fi
echo "安装目录: $INSTALL_DIR"
# 选二进制
@ -28,24 +36,36 @@ fi
# 创建目录
mkdir -p "$INSTALL_DIR"/{bin,config,data}
# 复制文件
# 复制二进制(始终更新)
cp "$SCRIPT_DIR/$BIN" "$INSTALL_DIR/bin/safesightd"
chmod +x "$INSTALL_DIR/bin/safesightd"
[ -f "$SCRIPT_DIR/safesightd.json.example" ] && cp "$SCRIPT_DIR/safesightd.json.example" "$INSTALL_DIR/config/safesightd.json"
[ -d "$SCRIPT_DIR/configs" ] && cp -r "$SCRIPT_DIR/configs" "$INSTALL_DIR/"
[ -d "$SCRIPT_DIR/tools" ] && cp -r "$SCRIPT_DIR/tools" "$INSTALL_DIR/"
[ -d "$SCRIPT_DIR/scripts" ] && cp -r "$SCRIPT_DIR/scripts" "$INSTALL_DIR/"
[ -d "$SCRIPT_DIR/deps" ] && cp -r "$SCRIPT_DIR/deps" "$INSTALL_DIR/"
# 配置文件:仅在全新安装时创建,升级保留
if [ "$UPGRADE" = false ] && [ -f "$SCRIPT_DIR/safesightd.json.example" ]; then
cp "$SCRIPT_DIR/safesightd.json.example" "$INSTALL_DIR/config/safesightd.json"
echo " ✓ 配置已创建(请修改 agent_token"
else
echo " ✓ 配置文件保留"
fi
# 安装服务
# 种子数据、工具、脚本(始终更新)
[ -d "$SCRIPT_DIR/configs" ] && cp -r "$SCRIPT_DIR/configs"/* "$INSTALL_DIR/configs/" 2>/dev/null && echo " ✓ 种子数据已更新"
[ -d "$SCRIPT_DIR/tools" ] && cp -r "$SCRIPT_DIR/tools"/* "$INSTALL_DIR/tools/" 2>/dev/null && echo " ✓ 构建工具已更新"
[ -d "$SCRIPT_DIR/scripts" ] && cp -r "$SCRIPT_DIR/scripts"/* "$INSTALL_DIR/scripts/" 2>/dev/null && echo " ✓ 脚本已更新"
[ -d "$SCRIPT_DIR/deps" ] && cp -r "$SCRIPT_DIR/deps" "$INSTALL_DIR/" 2>/dev/null && echo " ✓ 依赖包已更新"
# 安装/更新服务
cp "$SCRIPT_DIR/safesightd.service" /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now safesightd
if [ "$UPGRADE" = true ]; then
systemctl start safesightd
else
systemctl enable --now safesightd
fi
echo ""
echo "========== 安装完成 =========="
echo "服务状态:"
systemctl status safesightd --no-pager -l
echo "========== 完成 =========="
systemctl status safesightd --no-pager -l | head -10
echo ""
echo "打开 http://$(hostname -I | awk '{print $1}'):18080"