#!/bin/bash # PostgreSQL Backup Script # Generated by Ansible set -e BACKUP_DIR="{{ forgejo_backup_path }}" TIMESTAMP=$(date +%Y%m%dT%H%M%S) LOG_FILE="/var/log/postgres-backup.log" # Ensure backup directory exists mkdir -p "$BACKUP_DIR" echo "[$(date)] Starting PostgreSQL backup..." | tee -a "$LOG_FILE" # Create database backup sudo -u postgres pg_dump {{ forgejo_db_name }} | gzip > "$BACKUP_DIR/postgres-$TIMESTAMP.sql.gz" echo "[$(date)] PostgreSQL backup completed: postgres-$TIMESTAMP.sql.gz" | tee -a "$LOG_FILE" # Clean old PostgreSQL backups (keep last {{ forgejo_backup_retention_days }} days) find "$BACKUP_DIR" -type f -name "postgres-*.sql.gz" -mtime +{{ forgejo_backup_retention_days }} -delete echo "[$(date)] Old PostgreSQL backups cleaned" | tee -a "$LOG_FILE"