149 lines
5.7 KiB
Bash
149 lines
5.7 KiB
Bash
#!/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"
|