定时备份
sh
cd /opt/pg17
mkdir -p scripts logs
vim /opt/pg17/scripts/backup.shbash
#!/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.shsh
crontab -e
0 2 * * * /opt/pg17/scripts/backup.sh >> /opt/pg17/logs/backup-$(date +\%F).log 2>&1