105 lines
2.6 KiB
Bash
105 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# 3588AdminBackend 升级脚本
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
INSTALL_DIR="${1:-/opt/3588admin}"
|
|
BACKUP_DIR="/root/3588admin-backup-$(date +%Y%m%d%H%M%S)"
|
|
|
|
echo "========== 3588AdminBackend 升级 =========="
|
|
echo "安装目录: $INSTALL_DIR"
|
|
echo "备份目录: $BACKUP_DIR"
|
|
echo ""
|
|
|
|
# 检查 root 权限
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "错误: 请使用 sudo 运行升级脚本"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查安装目录是否存在
|
|
if [ ! -d "$INSTALL_DIR" ]; then
|
|
echo "错误: 安装目录不存在: $INSTALL_DIR"
|
|
echo "请先运行 install.sh 进行首次安装"
|
|
exit 1
|
|
fi
|
|
|
|
# 确认
|
|
read -p "确定要升级 3588AdminBackend? (y/N): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "升级已取消"
|
|
exit 0
|
|
fi
|
|
|
|
# 1. 停止服务
|
|
echo "[1/5] 停止服务..."
|
|
if [ -f "$INSTALL_DIR/scripts/stop.sh" ]; then
|
|
"$INSTALL_DIR/scripts/stop.sh" 2>/dev/null || true
|
|
elif systemctl is-active --quiet 3588admin 2>/dev/null; then
|
|
systemctl stop 3588admin
|
|
fi
|
|
sleep 2
|
|
|
|
# 2. 备份
|
|
echo "[2/5] 备份现有数据..."
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# 备份配置
|
|
if [ -f "$INSTALL_DIR/config/managerd.json" ]; then
|
|
cp "$INSTALL_DIR/config/managerd.json" "$BACKUP_DIR/"
|
|
echo " 已备份配置文件"
|
|
fi
|
|
|
|
# 备份日志
|
|
if [ -d "$INSTALL_DIR/logs" ]; then
|
|
cp -r "$INSTALL_DIR/logs" "$BACKUP_DIR/"
|
|
echo " 已备份日志文件"
|
|
fi
|
|
|
|
# 备份旧版本二进制
|
|
if [ -f "$INSTALL_DIR/bin/managerd" ]; then
|
|
cp "$INSTALL_DIR/bin/managerd" "$BACKUP_DIR/managerd.old"
|
|
echo " 已备份旧版本二进制"
|
|
fi
|
|
|
|
echo " 备份完成: $BACKUP_DIR"
|
|
|
|
# 3. 更新二进制文件
|
|
echo "[3/5] 更新二进制文件..."
|
|
if [ -f "$SCRIPT_DIR/../bin/managerd" ]; then
|
|
cp "$SCRIPT_DIR/../bin/managerd" "$INSTALL_DIR/bin/managerd"
|
|
chmod +x "$INSTALL_DIR/bin/managerd"
|
|
echo " 已更新二进制文件"
|
|
else
|
|
echo "警告: 未找到新的二进制文件,跳过更新"
|
|
fi
|
|
|
|
# 4. 更新脚本
|
|
echo "[4/5] 更新脚本..."
|
|
if [ -d "$SCRIPT_DIR" ]; then
|
|
cp "$SCRIPT_DIR/"*.sh "$INSTALL_DIR/scripts/" 2>/dev/null || true
|
|
chmod +x "$INSTALL_DIR/scripts/"*.sh
|
|
echo " 已更新脚本文件"
|
|
fi
|
|
|
|
# 5. 启动服务
|
|
echo "[5/5] 启动服务..."
|
|
if [ -f "$INSTALL_DIR/scripts/start.sh" ]; then
|
|
"$INSTALL_DIR/scripts/start.sh"
|
|
else
|
|
systemctl start 3588admin
|
|
fi
|
|
|
|
echo ""
|
|
echo "========== 升级完成 =========="
|
|
echo "服务已启动"
|
|
echo ""
|
|
echo "备份位置: $BACKUP_DIR"
|
|
echo ""
|
|
echo "如升级后出现问题,可快速回滚:"
|
|
echo " sudo systemctl stop 3588admin"
|
|
echo " sudo cp $BACKUP_DIR/managerd.old $INSTALL_DIR/bin/managerd"
|
|
echo " sudo systemctl start 3588admin"
|