WuYongJie 75db836d29 feat(3D核心功能): 完成所有必需实现任务
- 文件上传验证: ModelUploader组件增强、上传API错误处理
- GLTF解析器: 增强节点提取和元数据
- 板材编辑: PanelEditor客户端验证 + panels API服务端验证
- 装配步骤编辑: 修复未使用代码,添加预览按钮
- 装配动画播放: AssemblyPlayer步骤导航边界检查优化
- 分享链接: 完整CRUD API(创建、获取、删除),含验证和过期检查

跳过可选测试任务以加快MVP开发
2025-12-22 16:18:13 +08:00

84 lines
2.3 KiB
Bash

#!/bin/bash
# ============================================
# 完整系统备份脚本 (Linux/Mac)
# ============================================
# 功能:
# - 备份 PostgreSQL 数据库
# - 备份 MinIO 文件存储
# - 备份关键配置文件 (.env, docker-compose*.yml, prisma/schema.prisma)
# - 生成本次完整备份的清单 (manifest)
# 使用:
# ./scripts/backup-all.sh [备份根目录]
# 默认为 ./backups/full
# ============================================
set -e
BACKUP_ROOT="${1:-./backups/full}"
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP_DIR="${BACKUP_ROOT}/${TIMESTAMP}"
# 创建目录结构
mkdir -p "${BACKUP_DIR}/database" "${BACKUP_DIR}/files" "${BACKUP_DIR}/config"
echo "========================================"
echo " 完整系统备份脚本"
echo "========================================"
echo "备份根目录: ${BACKUP_ROOT}"
echo "本次备份目录: ${BACKUP_DIR}"
echo ""
# 1. 备份数据库
./scripts/backup-db.sh "${BACKUP_DIR}/database"
# 2. 备份文件存储 (MinIO)
./scripts/backup-files.sh "${BACKUP_DIR}/files"
# 3. 备份关键配置文件
CONFIG_TARGET="${BACKUP_DIR}/config"
if [ -f .env ]; then
cp .env "${CONFIG_TARGET}/.env" || true
fi
# 复制 docker-compose 配置
cp docker-compose*.yml "${CONFIG_TARGET}" 2>/dev/null || true
# 复制 Prisma schema
if [ -f prisma/schema.prisma ]; then
mkdir -p "${CONFIG_TARGET}/prisma"
cp prisma/schema.prisma "${CONFIG_TARGET}/prisma/schema.prisma" || true
fi
# 4. 生成简单清单文件
MANIFEST_FILE="${BACKUP_DIR}/backup-manifest.json"
DB_BACKUP_FILE="$(ls -1 "${BACKUP_DIR}/database"/db-backup-*.sql.gz 2>/dev/null | head -n 1)"
FILES_BACKUP_FILE="$(ls -1 "${BACKUP_DIR}/files"/files-backup-*.tar.gz 2>/dev/null | head -n 1)"
cat > "${MANIFEST_FILE}" << EOF
{
"timestamp": "$(date -Iseconds)",
"root": "${BACKUP_DIR}",
"components": {
"database": "${DB_BACKUP_FILE##*/}",
"files": "${FILES_BACKUP_FILE##*/}",
"config": [
".env",
"docker-compose*.yml",
"prisma/schema.prisma"
]
}
}
EOF
echo ""
echo "========================================"
echo " 🎉 完整备份完成"
echo "========================================"
echo "备份目录: ${BACKUP_DIR}"
echo "清单文件: ${MANIFEST_FILE}"
echo "========================================"
echo ""