From be7fc7e64b6ec5963bbb2c207629ec8719a7d8e0 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Tue, 21 Jul 2026 16:58:53 +0800 Subject: [PATCH] rewrite: upgrade-from-old now uses deploy.sh + offline package, preserves camera configs --- scripts/ffmpeg-push.bat | 3 + scripts/upgrade-from-old.sh | 169 ++++++++++++++---------------------- 2 files changed, 68 insertions(+), 104 deletions(-) create mode 100644 scripts/ffmpeg-push.bat diff --git a/scripts/ffmpeg-push.bat b/scripts/ffmpeg-push.bat new file mode 100644 index 0000000..f8a8e09 --- /dev/null +++ b/scripts/ffmpeg-push.bat @@ -0,0 +1,3 @@ +@echo off +chcp 65001 >nul +"C:\Users\Tellme\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-8.0.1-full_build\bin\ffmpeg.exe" -re -stream_loop -1 -i C:\Users\Tellme\Pictures\人脸库\reg_008_unk_011_多人_正面_黑色鞋_白色鞋_1.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://10.0.0.49:8554/cam diff --git a/scripts/upgrade-from-old.sh b/scripts/upgrade-from-old.sh index a4dfaad..1533fb8 100644 --- a/scripts/upgrade-from-old.sh +++ b/scripts/upgrade-from-old.sh @@ -1,6 +1,6 @@ #!/bin/bash # 旧设备升级脚本:从 OrangePi3588Media/rk3588-media-server 升级到 safesight-edge-server -# 保留所有现有配置和摄像头设置 +# 使用离线包 + deploy.sh,保留所有现有摄像头配置,丢弃旧源码 set -e RED='\033[0;31m' @@ -8,19 +8,40 @@ 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} 旧设备升级到 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. 备份现有配置" -echo " 2. 停止服务" -echo " 3. 重命名目录和文件" -echo " 4. 更新所有配置路径" -echo " 5. 部署新二进制" -echo " 6. 启动新服务" +echo " 1. 备份配置到 $BACKUP_DIR" +echo " 2. 停止并移除旧服务" +echo " 3. 部署新版本(保留摄像头配置)" +echo " 4. 移除旧源码" echo "" read -p "继续? (y/N): " -n 1 -r echo @@ -29,112 +50,52 @@ if [[ ! $REPLY =~ ^[Yy]$ ]]; then 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}" +# ---- 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 配置" -# 备份 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}" +# ---- 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 -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 " 服务已注册" +echo " 旧服务已停止" -# ---- 6. 部署新二进制 ---- -echo -e "${GREEN}[6/7] 部署新二进制${NC}" +# ---- 3. 用 deploy.sh 安装新版本 ---- +echo -e "${GREEN}[3/5] 安装新版本${NC}" +AGENT_TOKEN="$AGENT_TOKEN" bash "$SCRIPT_DIR/deploy.sh" install -# 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 已部署" +# ---- 4. 恢复摄像头配置 ---- +echo -e "${GREEN}[4/5] 恢复摄像头配置${NC}" +if [ -f "$BACKUP_DIR/media-server.json" ]; then + OLD_CONFIG="$BACKUP_DIR/media-server.json" + NEW_CONFIG="/opt/safesight-edge-server/etc/safesight-edge-server.json" + + # Copy old config, fix paths to new locations + cp "$OLD_CONFIG" "$NEW_CONFIG" + sed -i 's|/opt/rk3588-media-server|/opt/safesight-edge-server|g' "$NEW_CONFIG" + sed -i 's|/var/lib/rk3588-media-server|/var/lib/safesight-edge-server|g' "$NEW_CONFIG" + + echo " ✓ 摄像头配置已恢复" + + # Restart to apply restored config + systemctl restart safesight-edge-server else - echo -e " ${RED}未找到 build/safesight-edge-server,请先编译${NC}" + echo " 未找到旧摄像头配置,使用部署默认配置" 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}" +# ---- 5. 清理旧源码 ---- +echo -e "${GREEN}[5/5] 清理旧源码${NC}" +if [ -d ~/apps/OrangePi3588Media ]; then + rm -rf ~/apps/OrangePi3588Media + echo " ✓ 已删除 ~/apps/OrangePi3588Media" 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 +# 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}" @@ -145,4 +106,4 @@ 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" +echo " 验证: curl http://localhost:9100/v1/info"