Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions examples/pgsql/.env.empty
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# ─── Volume ────────────────────────────────────────
HOST_BACKUP_PATH=
HOST_LOG_PATH=
HOST_TEMP_PATH=

# ─── Basic ─────────────────────────────────────────
TZ=
TIMEZONE=

# ─── Notification ──────────────────────────────────
ENABLE_NOTIFICATIONS=
NOTIFICATION_TYPE=
SMTP_HOST=
SMTP_PORT=
SMTP_DOMAIN=
SMTP_MAILDOMAIN=
SMTP_TLS=
SMTP_STARTTLS=
MAIL_FROM=
MAIL_TO=

# ─── Global Default ────────────────────────────────
DEFAULT_BACKUP_LOCATION=
DEFAULT_CREATE_LATEST_SYMLINK=
DEFAULT_COMPRESSION=
DEFAULT_COMPRESSION_LEVEL=
DEFAULT_CLEANUP_TIME=
DEFAULT_LOG_LEVEL=
DEFAULT_BACKUP_GLOBALS=
DEFAULT_SIZE_VALUE=
DEFAULT_FILESYSTEM_PATH=

# ─── DB01 ──────────────────────────────────────────
DB01_FILESYSTEM_PATH=
DB01_TYPE=
DB01_HOST=
DB01_PORT=
DB01_USER=
DB01_PASS=
DB01_NAME=
DB01_SPLIT_DB=
DB01_BACKUP_BEGIN=

# ─── DB02 ──────────────────────────────────────────
DB02_FILESYSTEM_PATH=
DB02_TYPE=
DB02_HOST=
DB02_PORT=
DB02_USER=
DB02_PASS=
DB02_NAME=
DB02_SPLIT_DB=
DB02_BACKUP_BEGIN=

# ─── DB03 ────────────────────────────────────────────────────
DB03_FILESYSTEM_PATH=
DB03_TYPE=
DB03_HOST=
DB03_PORT=
DB03_USER=
DB03_PASS=
DB03_NAME=
DB03_SPLIT_DB=
DB03_BACKUP_BEGIN=
101 changes: 101 additions & 0 deletions examples/pgsql/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Volume Path Settings ─────────────────────────────────────────────────────────────────────────
# Host backup storage path
HOST_BACKUP_PATH=/mnt/upload/db-backup
# Host log storage path
HOST_LOG_PATH=/mnt/upload/db-backup/logs
# Host backup and compression temp path (mount to external NAS to avoid host capacity issues)
HOST_TEMP_PATH=/mnt/upload/db-backup/tmp
# Container backup path (default, can be overridden for each DB)
CONTAINER_BACKUP_PATH=/backup
# Container log path (default)
CONTAINER_LOG_PATH=/logs
# Container backup and compression temp path (default)
CONTAINER_TEMP_PATH=/tmp/backups

# Basic Settings ───────────────────────────────────────────────────────────────────────────────
# Container timezone setting
TZ=Asia/Taipei
# Internal scheduler timezone for db-backup
TIMEZONE=Asia/Taipei
# Enable container monitoring functionality
CONTAINER_ENABLE_MONITORING=FALSE
# Number of concurrent backup jobs (recommended to set to 1 to avoid resource competition)
BACKUP_JOB_CONCURRENCY=1
# print copious shell script messages to the container log
DEBUG_MODE=FALSE

# Notification Settings (Optional) ─────────────────────────────────────────────────────────────
# Enable notification functionality
ENABLE_NOTIFICATIONS=TRUE
# Notification type (CUSTOM EMAIL MATRIX MATTERMOST ROCKETCHAT)
NOTIFICATION_TYPE=EMAIL
# Add setting to support sending through Gmail SMTP (default FALSE)
SMTP_AUTO_FROM=FALSE
# Hostname of SMTP Server
SMTP_HOST=smtp-relay.gmail.com
# Port of SMTP Server (default 25)
SMTP_PORT=587
# HELO domain
SMTP_DOMAIN=domain.com
# Mail Domain From, Message-ID domain
SMTP_MAILDOMAIN=domain.com
# SMTP Authentication (default none)
SMTP_AUTHENTICATION=login
# SMTP Username
SMTP_USER=
# SMTP Password
SMTP_PASS=
# Use TLS (default FALSE)
SMTP_TLS=on
# Start TLS from within session (default FALSE)
SMTP_STARTTLS=on
# Check remote certificate (default FALSE)
SMTP_TLSCERTCHECK=off
# SMTP Allow From Override
SMTP_ALLOW_FROM_OVERRIDE=
# Sender email address
[email protected]
# Recipient email addresses, multiple can be separated by commas
[email protected],[email protected]
# turn debug mode on when notify
DEBUG_NOTIFY=FALSE

# Global Default Settings ──────────────────────────────────────────────────────────────────────
# Backup storage system (FILESYSTEM/S3/blobxfer)
DEFAULT_BACKUP_LOCATION=FILESYSTEM
# Create latest symlink pointing to the newest backup
DEFAULT_CREATE_LATEST_SYMLINK=FALSE
# Compression method (Gzip GZ, Bzip2 BZ, XZip XZ, ZSTD ZSTD or none NONE)
DEFAULT_COMPRESSION=ZSTD
# Compression level (1-9, higher numbers provide better compression but slower speed)
DEFAULT_COMPRESSION_LEVEL=6
# Backup retention time (minutes)
DEFAULT_CLEANUP_TIME=10080
# Log level (INFO NOTICE ERROR WARN DEBUG)
DEFAULT_LOG_LEVEL=DEBUG
# Backup Globals after backing up database (forces TRUE if `_NAME=ALL``)
DEFAULT_BACKUP_GLOBALS=TRUE
DEFAULT_SIZE_VALUE=megabytes
# Backup path, defaults to /backup if not specified
DEFAULT_FILESYSTEM_PATH=/backup/default

# DB01 PostgreSQL Settings ─────────────────────────────────────────────────────────────────────
# Backup file storage path (container path)
DB01_FILESYSTEM_PATH=/backup/db01
# Database type (pgsql/mysql/mongodb etc.)
DB01_TYPE=pgsql
# PostgreSQL host address
DB01_HOST=your-postgres-host
# PostgreSQL port
DB01_PORT=5432
# PostgreSQL username (recommend using dedicated account with backup permissions)
DB01_USER=postgres
# PostgreSQL password
DB01_PASS=your-password
# Database name to backup (ALL=all databases, or specify specific database name)
DB01_NAME=ALL
# Store each database as separate files
DB01_SPLIT_DB=TRUE
# Backup execution time (cron format: min hour day month week, or +number for N minutes later)
# Example: "30 9 * * 6" = every Saturday 09:30, "+1" = 1 minute later
DB01_BACKUP_BEGIN=+1
78 changes: 78 additions & 0 deletions examples/pgsql/compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#
# Example for PostgreSQL
#

services:
db-backup:
image: tiredofit/db-backup:latest
container_name: db-backup
restart: unless-stopped
volumes:
- ${HOST_BACKUP_PATH}:${CONTAINER_BACKUP_PATH:-/backup}
- ${HOST_LOG_PATH}:${CONTAINER_LOG_PATH:-/logs}
- ${HOST_TEMP_PATH}:${CONTAINER_TEMP_PATH:-/tmp/backups}
environment:
# ─── Basic ──────────────────────────────────────────────────
TZ: ${TZ}
TIMEZONE: ${TIMEZONE}
CONTAINER_ENABLE_MONITORING: ${CONTAINER_ENABLE_MONITORING:-FALSE}
BACKUP_JOB_CONCURRENCY: ${BACKUP_JOB_CONCURRENCY:-1}
DEBUG_MODE: ${DEBUG_MODE:-FALSE}

# ─── Notification ───────────────────────────────────────────
ENABLE_NOTIFICATIONS: ${ENABLE_NOTIFICATIONS}
NOTIFICATION_TYPE: ${NOTIFICATION_TYPE}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_DOMAIN: ${SMTP_DOMAIN}
SMTP_MAILDOMAIN: ${SMTP_MAILDOMAIN}
SMTP_TLS: ${SMTP_TLS}
SMTP_STARTTLS: ${SMTP_STARTTLS}
SMTP_TLSCERTCHECK: ${SMTP_TLSCERTCHECK:-off}
MAIL_FROM: ${MAIL_FROM}
MAIL_TO: ${MAIL_TO}
DEBUG_NOTIFY: ${DEBUG_NOTIFY:-FALSE}

# ─── Global Default ─────────────────────────────────────────
DEFAULT_BACKUP_LOCATION: ${DEFAULT_BACKUP_LOCATION}
DEFAULT_CREATE_LATEST_SYMLINK: ${DEFAULT_CREATE_LATEST_SYMLINK}
DEFAULT_COMPRESSION: ${DEFAULT_COMPRESSION}
DEFAULT_COMPRESSION_LEVEL: ${DEFAULT_COMPRESSION_LEVEL}
DEFAULT_CLEANUP_TIME: ${DEFAULT_CLEANUP_TIME}
DEFAULT_LOG_LEVEL: ${DEFAULT_LOG_LEVEL}
DEFAULT_BACKUP_GLOBALS: ${DEFAULT_BACKUP_GLOBALS}
DEFAULT_SIZE_VALUE: ${DEFAULT_SIZE_VALUE}
DEFAULT_FILESYSTEM_PATH: ${DEFAULT_FILESYSTEM_PATH}

# ─── DB01 ────────────────────────────────────────────────────
DB01_FILESYSTEM_PATH: ${DB01_FILESYSTEM_PATH}
DB01_TYPE: ${DB01_TYPE}
DB01_HOST: ${DB01_HOST}
DB01_PORT: ${DB01_PORT}
DB01_USER: ${DB01_USER}
DB01_PASS: ${DB01_PASS}
DB01_NAME: ${DB01_NAME}
DB01_SPLIT_DB: ${DB01_SPLIT_DB}
DB01_BACKUP_BEGIN: ${DB01_BACKUP_BEGIN}

# ─── DB02 ────────────────────────────────────────────────────
DB02_FILESYSTEM_PATH: ${DB02_FILESYSTEM_PATH}
DB02_TYPE: ${DB02_TYPE}
DB02_HOST: ${DB02_HOST}
DB02_PORT: ${DB02_PORT}
DB02_USER: ${DB02_USER}
DB02_PASS: ${DB02_PASS}
DB02_NAME: ${DB02_NAME}
DB02_SPLIT_DB: ${DB02_SPLIT_DB}
DB02_BACKUP_BEGIN: ${DB02_BACKUP_BEGIN}

# ─── DB03 ────────────────────────────────────────────────────
DB03_FILESYSTEM_PATH: ${DB03_FILESYSTEM_PATH}
DB03_TYPE: ${DB03_TYPE}
DB03_HOST: ${DB03_HOST}
DB03_PORT: ${DB03_PORT}
DB03_USER: ${DB03_USER}
DB03_PASS: ${DB03_PASS}
DB03_NAME: ${DB03_NAME}
DB03_SPLIT_DB: ${DB03_SPLIT_DB}
DB03_BACKUP_BEGIN: ${DB03_BACKUP_BEGIN}