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

149 lines
5.7 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
# 保留所有现有配置和摄像头设置
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"