#!/bin/bash # ============================================================ # Hindsight 备份任务(每日 02:30 跑,cron 部署参考 crontab/) # - 热备份:docker exec pg_dump 落盘到 bind 挂载的 backups/ # - 保留 7 天的 .sql.gz # ============================================================ set -euo pipefail BACKUP_DIR="/home/geng/hindsight/backups" KEEP_DAYS=7 TS=$(date +%Y%m%d_%H%M%S) FNAME="hindsight_db_${TS}.sql.gz" mkdir -p "${BACKUP_DIR}" docker exec hindsight-db pg_dump \ -U hindsight_user \ -d hindsight_db \ --no-owner --no-privileges \ | gzip > "${BACKUP_DIR}/${FNAME}" # 清理超过 KEEP_DAYS 天的旧备份 find "${BACKUP_DIR}" -name "hindsight_db_*.sql.gz" -mtime +${KEEP_DAYS} -delete echo "[backup] ok: ${FNAME} ($(du -h "${BACKUP_DIR}/${FNAME}" | cut -f1))"