COS 迁移: - 后端签名服务改为 COS HMAC-SHA1 表单直传签名 - config.py: OSS_* 配置项替换为 COS_SECRET_ID/KEY/REGION/BUCKET_NAME/CDN_DOMAIN - upload.py: UploadPolicyResponse 改为 COS 字段 - 前端 useOSSUpload hook: FormData 字段改为 COS 格式 - 前端 api.ts: UploadPolicyResponse 类型对齐 部署配置: - docker-compose.yml: 新增 Nginx + 前端容器,数据卷宿主机持久化 - Nginx: HTTPS + HTTP/2 + SSE 长连接 + API/前端反向代理 - backup.sh: PostgreSQL 每日备份 → 本地 + COS - .env.example: 更新为 COS 配置模板 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
50 lines
1.6 KiB
Bash
Executable File
50 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
||
# ===========================
|
||
# PostgreSQL 每日备份脚本
|
||
# 备份到本地 + 上传到腾讯云 COS
|
||
# ===========================
|
||
# 配合 crontab 使用:
|
||
# 0 3 * * * /path/to/backup.sh >> /var/log/miaosi-backup.log 2>&1
|
||
|
||
set -euo pipefail
|
||
|
||
# ---- 配置 ----
|
||
BACKUP_DIR="${BACKUP_DIR:-/var/backups/miaosi}"
|
||
POSTGRES_CONTAINER="${POSTGRES_CONTAINER:-miaosi-postgres}"
|
||
POSTGRES_USER="${POSTGRES_USER:-postgres}"
|
||
POSTGRES_DB="${POSTGRES_DB:-miaosi}"
|
||
RETAIN_DAYS="${RETAIN_DAYS:-7}"
|
||
|
||
# COS 备份桶(需要先安装 coscli 并配置好凭证)
|
||
COS_BACKUP_BUCKET="${COS_BACKUP_BUCKET:-}"
|
||
COS_BACKUP_PREFIX="${COS_BACKUP_PREFIX:-backups/postgres}"
|
||
|
||
# ---- 执行 ----
|
||
DATE=$(date +%Y%m%d_%H%M%S)
|
||
FILENAME="miaosi_${DATE}.sql.gz"
|
||
|
||
mkdir -p "$BACKUP_DIR"
|
||
|
||
echo "[$(date)] 开始备份数据库 ${POSTGRES_DB}..."
|
||
|
||
# 1. pg_dump 导出并压缩
|
||
docker exec "$POSTGRES_CONTAINER" pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB" | gzip > "${BACKUP_DIR}/${FILENAME}"
|
||
|
||
echo "[$(date)] 本地备份完成: ${BACKUP_DIR}/${FILENAME}"
|
||
|
||
# 2. 上传到 COS(如果配置了备份桶)
|
||
if [ -n "$COS_BACKUP_BUCKET" ]; then
|
||
if command -v coscli &> /dev/null; then
|
||
coscli cp "${BACKUP_DIR}/${FILENAME}" "cos://${COS_BACKUP_BUCKET}/${COS_BACKUP_PREFIX}/${FILENAME}"
|
||
echo "[$(date)] 已上传到 COS: ${COS_BACKUP_BUCKET}/${COS_BACKUP_PREFIX}/${FILENAME}"
|
||
else
|
||
echo "[$(date)] 警告: coscli 未安装,跳过 COS 上传"
|
||
fi
|
||
fi
|
||
|
||
# 3. 清理过期的本地备份
|
||
find "$BACKUP_DIR" -name "miaosi_*.sql.gz" -mtime +"$RETAIN_DAYS" -delete
|
||
echo "[$(date)] 已清理 ${RETAIN_DAYS} 天前的本地备份"
|
||
|
||
echo "[$(date)] 备份完成"
|