26 lines
933 B
Bash
Executable File
26 lines
933 B
Bash
Executable File
#!/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
|