safesight-edge/scripts/upgrade-from-old.sh

103 lines
3.6 KiB
Bash
Raw 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.

#!/bin/bash
# 旧设备升级脚本:从 OrangePi3588Media/rk3588-media-server 升级到 safesight-edge-server
# 使用离线包 + deploy.sh保留所有现有摄像头配置丢弃旧源码
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo -e "${YELLOW}========================================${NC}"
echo -e "${YELLOW} 旧设备升级到 safesight-edge-server${NC}"
echo -e "${YELLOW}========================================${NC}"
echo ""
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}请使用 sudo 运行${NC}"
exit 1
fi
AGENT_TOKEN="${AGENT_TOKEN:-}"
if [ -z "$AGENT_TOKEN" ]; then
# Try to read from old agent config
if [ -f /opt/rk3588-agent/agent.config.json ]; then
AGENT_TOKEN=$(grep -o '"token":"[^"]*"' /opt/rk3588-agent/agent.config.json | cut -d'"' -f4)
echo -e "${GREEN}${NC} 从旧配置读取 agent token"
fi
fi
if [ -z "$AGENT_TOKEN" ]; then
echo -e "${RED}错误: 无法获取 AGENT_TOKEN${NC}"
echo "请设置: sudo AGENT_TOKEN=<token> $0"
exit 1
fi
# 确认
BACKUP_DIR="/root/safesight-upgrade-backup-$(date +%Y%m%d%H%M%S)"
mkdir -p "$BACKUP_DIR"
echo "此操作将:"
echo " 1. 备份配置到 $BACKUP_DIR"
echo " 2. 停止并移除旧服务"
echo " 3. 部署新版本(保留摄像头配置)"
echo " 4. 移除旧源码"
echo ""
read -p "继续? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "已取消"
exit 0
fi
# ---- 1. 备份配置 ----
echo -e "${GREEN}[1/5] 备份配置${NC}"
[ -f /opt/rk3588-media-server/etc/media-server.json ] && cp /opt/rk3588-media-server/etc/media-server.json "$BACKUP_DIR/" && echo " ✓ media-server 配置"
[ -f /opt/rk3588-agent/agent.config.json ] && cp /opt/rk3588-agent/agent.config.json "$BACKUP_DIR/" && echo " ✓ agent 配置"
# ---- 2. 停止并移除旧服务 ----
echo -e "${GREEN}[2/5] 停止旧服务${NC}"
systemctl stop rk3588-agent media-server 2>/dev/null || true
systemctl disable rk3588-agent media-server 2>/dev/null || true
rm -f /etc/systemd/system/rk3588-agent.service /etc/systemd/system/media-server.service
systemctl daemon-reload
echo " 旧服务已停止"
# ---- 3. 用 deploy.sh 安装新版本 ----
echo -e "${GREEN}[3/5] 安装新版本${NC}"
AGENT_TOKEN="$AGENT_TOKEN" bash "$SCRIPT_DIR/deploy.sh" install
# ---- 4. 保存旧配置参考 ----
echo -e "${GREEN}[4/5] 保存旧配置参考${NC}"
if [ -f "$BACKUP_DIR/media-server.json" ]; then
echo "旧配置中的摄像头 RTSP 地址:"
grep -o '"url":"[^"]*"' "$BACKUP_DIR/media-server.json" | sort -u | while read line; do
echo " $line"
done
echo ""
echo "请使用管理端部署向导,用以上地址重新配置摄像头。"
echo "完整配置已备份到: $BACKUP_DIR/media-server.json"
fi
# ---- 5. 清理旧源码 ----
echo -e "${GREEN}[5/5] 清理旧源码${NC}"
if [ -d ~/apps/OrangePi3588Media ]; then
rm -rf ~/apps/OrangePi3588Media
echo " ✓ 已删除 ~/apps/OrangePi3588Media"
fi
# Remove old installation directories
rm -rf /opt/rk3588-media-server /opt/rk3588-agent 2>/dev/null || true
rm -rf /var/lib/rk3588-media-server /var/lib/rk3588-agent 2>/dev/null || true
echo " ✓ 旧安装目录已清理"
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} 升级完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo " 备份位置: $BACKUP_DIR"
echo " Edge Server: $(systemctl is-active safesight-edge-server)"
echo " Agent: $(systemctl is-active safesight-edge-agent)"
echo ""
echo " 验证: curl http://localhost:9100/v1/info"