#!/bin/sh # PostgreSQL 备份脚本:pg_dump 导出 + gzip 压缩 + 按天清理过期备份。 # 通过 infra.yml 的 hunjing-pg-backup 服务运行(profile: backup): # docker compose -f docker/docker-compose.infra.yml --profile backup run --rm hunjing-pg-backup # 备份产物落在项目根 backups/ 目录(已加入 .gitignore)。 set -eu PGDATABASE="${PGDATABASE:-hunjing}" PGHOST="${PGHOST:-hunjing-postgres}" PGPORT="${PGPORT:-5432}" mkdir -p /backups TS=$(date +%Y%m%d-%H%M%S) OUT="/backups/${PGDATABASE}-${TS}.sql.gz" echo "[backup] 导出 ${PGDATABASE}@${PGHOST}:${PGPORT} -> ${OUT}" pg_dump --no-owner --no-privileges | gzip > "$OUT" # 清理过期备份 retain="${BACKUP_RETAIN_DAYS:-7}" echo "[backup] 清理 ${retain} 天前的备份" find /backups -name '*.sql.gz' -type f -mtime +"$retain" -delete 2>/dev/null || true echo "[backup] 完成。当前备份列表:" ls -lh /backups 2>/dev/null || true