Files

38 lines
779 B
Bash

#!/bin/sh
# PostgreSQL 自动备份脚本
set -e
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.sql.gz"
echo "开始备份 PostgreSQL 数据库:$DATE"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
PGPASSWORD=$POSTGRES_PASSWORD pg_dump \
-h $POSTGRES_HOST \
-U $POSTGRES_USER \
-d $POSTGRES_DB \
--no-owner \
--no-acl \
| gzip > $BACKUP_FILE
# 检查备份是否成功
if [ -f "$BACKUP_FILE" ]; then
BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "备份完成:$BACKUP_FILE (大小: $BACKUP_SIZE)"
else
echo "备份失败!"
exit 1
fi
# 删除 30 天前的备份
find $BACKUP_DIR -name "backup_*.sql.gz" -mtime +30 -delete
echo "已清理 30 天前的备份文件"
echo "备份任务完成"