feat(#91): 生产环境部署方案 - 服务器初始化/Nginx HTTPS/compose生产覆盖/备份策略+文档
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# 数据备份策略(Issue #91):PostgreSQL 每日全量 + WAL 增量,保留 30 天,异地同步
|
||||
set -euo pipefail
|
||||
|
||||
BACKUP_DIR="${BACKUP_DIR:-/var/backups/wms}"
|
||||
RETENTION_DAYS="${RETENTION_DAYS:-30}"
|
||||
PG_CONTAINER="${PG_CONTAINER:-wms-postgres}"
|
||||
PG_DB="${PG_DB:-wms}"
|
||||
PG_USER="${PG_USER:-wms}"
|
||||
REMOTE="${BACKUP_REMOTE:-}" # 例:rsync://backup.xayunmei.local/wms
|
||||
|
||||
ts="$(date +%F_%H%M%S)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
file="$BACKUP_DIR/pg_${PG_DB}_${ts}.sql.gz"
|
||||
|
||||
echo "[backup] 全量备份 -> $file"
|
||||
docker exec "$PG_CONTAINER" pg_dump -U "$PG_USER" "$PG_DB" | gzip > "$file"
|
||||
sha256sum "$file" > "$file.sha256"
|
||||
|
||||
echo "[backup] 清理 ${RETENTION_DAYS} 天前的备份"
|
||||
find "$BACKUP_DIR" -name 'pg_*.sql.gz*' -mtime +"$RETENTION_DAYS" -delete
|
||||
|
||||
if [ -n "$REMOTE" ]; then
|
||||
echo "[backup] 异地同步 -> $REMOTE"
|
||||
rsync -az "$BACKUP_DIR/" "$REMOTE/"
|
||||
fi
|
||||
|
||||
echo "[backup] 完成"
|
||||
Reference in New Issue
Block a user