ByteNoteByteNote

字节笔记本

2026年5月3日

postgres-backup-r2 - Supabase 定时备份到 R2

API中转
¥120

最简单的 PostgreSQL/Supabase 定时备份到 Cloudflare R2 的 Docker 解决方案。

核心特性

特性说明
定时备份支持 cron 表达式,灵活配置备份频率
自动清理支持备份保留策略,自动删除旧备份
加密支持可选的备份加密功能
一键恢复支持从 R2 直接恢复备份
多版本支持支持 PostgreSQL 12-17
Docker 化开箱即用,无需复杂配置

快速开始

Docker Compose 配置

yaml
version: '3.8'
services:
  supabase-backup:
    image: dcalsky/postgres-backup-r2:16
    environment:
      SCHEDULE: '@daily'
      BACKUP_KEEP_DAYS: 30
      PASSPHRASE: 'your-encryption-key'
      CLOUDFLARE_R2_REGION: auto
      CLOUDFLARE_R2_ACCESS_KEY_ID: ${R2_ACCESS_KEY}
      CLOUDFLARE_R2_SECRET_ACCESS_KEY: ${R2_SECRET_KEY}
      CLOUDFLARE_R2_BUCKET: supabase-backups
      CLOUDFLARE_R2_ENDPOINT: https://${ACCOUNT_ID}.r2.cloudflarestorage.com
      R2_PREFIX: daily-backups
      POSTGRES_HOST: db.xxxxx.supabase.co
      POSTGRES_DATABASE: postgres
      POSTGRES_USER: postgres.xxxxx
      POSTGRES_PASSWORD: ${SUPABASE_DB_PASSWORD}
      POSTGRES_PORT: 5432
    restart: unless-stopped

环境变量说明

变量名必填说明
SCHEDULECron 表达式,如 @daily0 2 * * *
BACKUP_KEEP_DAYS备份保留天数,默认7天
PASSPHRASE加密密钥,设置后自动加密备份
CLOUDFLARE_R2_ACCESS_KEY_IDR2 Access Key
CLOUDFLARE_R2_SECRET_ACCESS_KEYR2 Secret Key
CLOUDFLARE_R2_BUCKETR2 Bucket 名称
CLOUDFLARE_R2_ENDPOINTR2 端点 URL
POSTGRES_HOST数据库主机地址

备份恢复

恢复最新备份

bash
docker exec <容器名称> sh restore.sh

按时间戳恢复

bash
docker exec postgres-backup sh restore.sh 20250201_140500

查看可用备份

bash
docker exec -it <容器名称> sh
aws s3 ls s3://${CLOUDFLARE_R2_BUCKET}/${R2_PREFIX}/ --endpoint-url=${CLOUDFLARE_R2_ENDPOINT}

相关链接

分享: