Skip to content

定时备份 ​

sh
cd /opt/pg17
mkdir -p scripts logs
vim /opt/pg17/scripts/backup.sh
bash
#!/bin/bash

set -e

PG_CONTAINER="pg17"
PG_USER="admin"
PG_DATABASE="admin_db"

BASE_DIR="/opt/pg17"
BACKUP_DIR="${BASE_DIR}/backup"

DATE=$(date +%F_%H-%M-%S)

mkdir -p "$BACKUP_DIR"

echo "[$(date '+%F %T')] backup start: database=${PG_DATABASE}"

docker exec "$PG_CONTAINER" \
  pg_dump \
  -U "$PG_USER" \
  -d "$PG_DATABASE" \
  -F c \
  -f "/backup/${PG_DATABASE}_${DATE}.dump"

echo "[$(date '+%F %T')] backup success: ${BACKUP_DIR}/${PG_DATABASE}_${DATE}.dump"

# 删除 14 天前的备份
find "$BACKUP_DIR" \
  -name "${PG_DATABASE}_*.dump" \
  -mtime +14 \
  -delete

注意备份是直接写入的 backup 目录

sh
chmod +x /opt/pg17/scripts/backup.sh
sh
crontab -e

0 2 * * * /opt/pg17/scripts/backup.sh >> /opt/pg17/logs/backup-$(date +\%F).log 2>&1

logrotate ​