Files
backend_v2/scripts/backup-db.sh
toom1996 2e76507d37 deploy: 本地预构建发布(push-build),对齐 1Panel 与 backend_v2 目录
- 新增 Dockerfile.prebuilt / scripts/push-build.sh:本机构建、只上传产物,服务器零编译
- deploy.sh 增加 --prebuilt(自动 --no-pull + 产物校验),并保留 --no-cache
- compose 支持 BACKEND_DOCKERFILE / WEB_DOCKERFILE 切换;预构建时用 prebuilt 变体
- init-db.sh / scripts/backup-db.sh 改为 docker exec 1Panel 的 Postgres 容器
- WEB_DIR 默认改为 ../frontend_v2;nginx 切换文件改到 .deploy/ 避免弄脏工作区
- 新增 .gitattributes 固定脚本与配置为 LF
2026-10-21 00:02:18 +08:00

31 lines
1.0 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.

#!/usr/bin/env bash
# 备份 1Panel 管理的 Postgres(直接 docker exec 进它的容器,不依赖宿主端口)
#
# ./scripts/backup-db.sh # 输出 backups/db-YYYY-MM-DD-HHMMSS.sql.gz
# KEEP_DAYS=7 ./scripts/backup-db.sh # 顺手删掉 7 天前的备份
#
# cron(每天 4 点):
# 0 4 * * * cd /opt/fashion/backend && KEEP_DAYS=7 ./scripts/backup-db.sh >> .deploy/backup.log 2>&1
set -euo pipefail
cd "$(dirname "$0")/.."
[ -f .env ] || { echo "!! 缺少 .env"; exit 1; }
set -a; . ./.env; set +a
PG_CONTAINER="${PG_CONTAINER:?PG_CONTAINER 未设置:填 .env 里那个 postgres 容器名}"
KEEP_DAYS="${KEEP_DAYS:-0}"
mkdir -p backups
OUT="backups/db-$(date +%F-%H%M%S).sql.gz"
echo "==> 备份到 $OUT"
docker exec -e PGPASSWORD="${DB_PASSWORD:?DB_PASSWORD 未设置}" "$PG_CONTAINER" \
pg_dump -U "${DB_USER:-fashion}" "${DB_NAME:-fashion}" | gzip > "$OUT"
echo " $(du -h "$OUT" | cut -f1)"
if [ "$KEEP_DAYS" -gt 0 ]; then
find backups -name 'db-*.sql.gz' -mtime +"$KEEP_DAYS" -print -delete
fi
echo "==> 完成"