#!/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= $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"