From 43ad12ec12c7d95b4bb4c372de611d00b2199012 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Tue, 21 Jul 2026 10:42:13 +0800 Subject: [PATCH] feat: add upgrade script for old devices (renames paths, preserves camera configs) --- scripts/upgrade-from-old.sh | 148 ++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 scripts/upgrade-from-old.sh diff --git a/scripts/upgrade-from-old.sh b/scripts/upgrade-from-old.sh new file mode 100644 index 0000000..a4dfaad --- /dev/null +++ b/scripts/upgrade-from-old.sh @@ -0,0 +1,148 @@ +#!/bin/bash +# 旧设备升级脚本:从 OrangePi3588Media/rk3588-media-server 升级到 safesight-edge-server +# 保留所有现有配置和摄像头设置 +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +echo -e "${YELLOW}========================================${NC}" +echo -e "${YELLOW} 旧设备升级:safesight-edge-server${NC}" +echo -e "${YELLOW}========================================${NC}" +echo "" + +# 确认 +echo "此操作将:" +echo " 1. 备份现有配置" +echo " 2. 停止服务" +echo " 3. 重命名目录和文件" +echo " 4. 更新所有配置路径" +echo " 5. 部署新二进制" +echo " 6. 启动新服务" +echo "" +read -p "继续? (y/N): " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "已取消" + exit 0 +fi + +# ---- 1. 备份 ---- +BACKUP_DIR="/root/safesight-upgrade-backup-$(date +%Y%m%d%H%M%S)" +mkdir -p "$BACKUP_DIR" +echo -e "${GREEN}[1/7] 备份到 $BACKUP_DIR${NC}" + +# 备份 agent 配置 +[ -f /opt/rk3588-agent/agent.config.json ] && cp /opt/rk3588-agent/agent.config.json "$BACKUP_DIR/" +# 备份 media-server 配置 +[ -f /opt/rk3588-media-server/etc/media-server.json ] && cp /opt/rk3588-media-server/etc/media-server.json "$BACKUP_DIR/" +# 备份 service 文件 +[ -f /etc/systemd/system/rk3588-agent.service ] && cp /etc/systemd/system/rk3588-agent.service "$BACKUP_DIR/" +[ -f /etc/systemd/system/media-server.service ] && cp /etc/systemd/system/media-server.service "$BACKUP_DIR/" + +echo " 配置已备份" + +# ---- 2. 停止服务 ---- +echo -e "${GREEN}[2/7] 停止旧服务${NC}" +systemctl stop rk3588-agent media-server 2>/dev/null || true +systemctl disable rk3588-agent media-server 2>/dev/null || true +echo " 服务已停止" + +# ---- 3. 重命名目录 ---- +echo -e "${GREEN}[3/7] 重命名目录${NC}" + +# Media server +if [ -d /opt/rk3588-media-server ] && [ ! -d /opt/safesight-edge-server ]; then + mv /opt/rk3588-media-server /opt/safesight-edge-server + echo " /opt/rk3588-media-server -> /opt/safesight-edge-server" +fi +if [ -d /var/lib/rk3588-media-server ] && [ ! -d /var/lib/safesight-edge-server ]; then + mv /var/lib/rk3588-media-server /var/lib/safesight-edge-server + echo " /var/lib/rk3588-media-server -> /var/lib/safesight-edge-server" +fi + +# Agent +if [ -d /opt/rk3588-agent ] && [ ! -d /opt/safesight-edge-agent ]; then + mv /opt/rk3588-agent /opt/safesight-edge-agent + echo " /opt/rk3588-agent -> /opt/safesight-edge-agent" +fi +if [ -d /var/lib/rk3588-agent ] && [ ! -d /var/lib/safesight-edge-agent ]; then + mv /var/lib/rk3588-agent /var/lib/safesight-edge-agent + echo " /var/lib/rk3588-agent -> /var/lib/safesight-edge-agent" +fi + +# ---- 4. 更新配置路径 ---- +echo -e "${GREEN}[4/7] 更新配置中的路径${NC}" + +# Agent 配置 +sed -i 's|/opt/rk3588-media-server|/opt/safesight-edge-server|g' /opt/safesight-edge-agent/agent.config.json 2>/dev/null +sed -i 's|/opt/rk3588-agent|/opt/safesight-edge-agent|g' /opt/safesight-edge-agent/agent.config.json 2>/dev/null +# 重命名 agent 二进制 +[ -f /opt/safesight-edge-agent/rk3588-agent ] && mv /opt/safesight-edge-agent/rk3588-agent /opt/safesight-edge-agent/safesight-edge-agent +echo " Agent 配置已更新" + +# Media server 配置(保留所有摄像头设置) +sed -i 's|/opt/rk3588-media-server|/opt/safesight-edge-server|g' /opt/safesight-edge-server/etc/media-server.json 2>/dev/null +# 重命名配置文件 +[ -f /opt/safesight-edge-server/etc/media-server.json ] && mv /opt/safesight-edge-server/etc/media-server.json /opt/safesight-edge-server/etc/safesight-edge-server.json +echo " Media Server 配置已更新,4路摄像头已保留" + +# HLS 软链接 +rm -f /opt/safesight-edge-server/web/hls +ln -s /var/lib/safesight-edge-server/hls /opt/safesight-edge-server/web/hls +echo " HLS 软链接已更新" + +# ---- 5. 安装新 service 文件 ---- +echo -e "${GREEN}[5/7] 安装新 systemd 服务${NC}" + +# 从项目源码复制 service 文件 +PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +cp "$PROJECT_DIR/scripts/deploy/safesight-edge-server.service" /etc/systemd/system/ +cp "$PROJECT_DIR/scripts/deploy/safesight-edge-agent.service" /etc/systemd/system/ + +# 移除旧 service +rm -f /etc/systemd/system/rk3588-agent.service /etc/systemd/system/media-server.service + +systemctl daemon-reload +systemctl enable safesight-edge-server safesight-edge-agent +echo " 服务已注册" + +# ---- 6. 部署新二进制 ---- +echo -e "${GREEN}[6/7] 部署新二进制${NC}" + +# Edge Server +if [ -f "$PROJECT_DIR/build/safesight-edge-server" ]; then + cp "$PROJECT_DIR/build/safesight-edge-server" /opt/safesight-edge-server/bin/ + chmod +x /opt/safesight-edge-server/bin/safesight-edge-server + echo " safesight-edge-server 已部署" +else + echo -e " ${RED}未找到 build/safesight-edge-server,请先编译${NC}" +fi + +# Agent +if [ -f "$PROJECT_DIR/agent/safesight-edge-agent" ]; then + cp "$PROJECT_DIR/agent/safesight-edge-agent" /opt/safesight-edge-agent/ + chmod +x /opt/safesight-edge-agent/safesight-edge-agent + echo " safesight-edge-agent 已部署" +else + echo -e " ${YELLOW}未找到 agent/safesight-edge-agent,请先编译${NC}" +fi + +# ---- 7. 启动服务 ---- +echo -e "${GREEN}[7/7] 启动新服务${NC}" +systemctl reset-failed safesight-edge-server safesight-edge-agent 2>/dev/null || true +systemctl start safesight-edge-server safesight-edge-agent +sleep 3 + +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 " 验证: http://$(hostname -I | awk '{print $1}'):9100/v1/info"