#!/bin/bash # Forgejo Backup Script # Generated by Ansible set -e BACKUP_DIR="{{ forgejo_backup_path }}" TIMESTAMP=$(date +%Y%m%dT%H%M%S) LOG_FILE="/var/log/forgejo-backup.log" echo "[$(date)] Starting Forgejo backup..." | tee -a "$LOG_FILE" # Create database backup pg_dump -U {{ forgejo_db_user }} {{ forgejo_db_name }} | gzip > "$BACKUP_DIR/database-$TIMESTAMP.sql.gz" echo "[$(date)] Database backed up" | tee -a "$LOG_FILE" # Backup repositories tar -czf "$BACKUP_DIR/repositories-$TIMESTAMP.tar.gz" -C {{ forgejo_data_path }} git echo "[$(date)] Repositories backed up" | tee -a "$LOG_FILE" # Backup configuration tar -czf "$BACKUP_DIR/config-$TIMESTAMP.tar.gz" {{ forgejo_config_path }} {{ forgejo_base_path }}/docker-compose.yml echo "[$(date)] Configuration backed up" | tee -a "$LOG_FILE" # Backup data tar -czf "$BACKUP_DIR/data-$TIMESTAMP.tar.gz" -C {{ forgejo_data_path }} attachments lfs avatars echo "[$(date)] Data backed up" | tee -a "$LOG_FILE" # Clean old backups find "$BACKUP_DIR" -type f -name "*.gz" -mtime +{{ forgejo_backup_retention_days }} -delete echo "[$(date)] Old backups cleaned" | tee -a "$LOG_FILE" echo "[$(date)] Backup completed successfully" | tee -a "$LOG_FILE"