#!/bin/bash # Gitea Backup Script # Erstellt ein Backup der Gitea-Daten set -e BACKUP_DIR="/opt/gitea-backups" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_NAME="gitea-backup-${DATE}.tar.gz" RETENTION_DAYS=7 # Backup-Verzeichnis erstellen mkdir -p "$BACKUP_DIR" echo "=== Gitea Backup gestartet: $(date) ===" # Docker Volume Pfad ermitteln VOLUME_PATH=$(docker volume inspect gitea-data --format '{{ .Mountpoint }}') if [ -z "$VOLUME_PATH" ]; then echo "Fehler: gitea-data Volume nicht gefunden!" exit 1 fi # Gitea stoppen für konsistentes Backup echo "Stoppe Gitea..." cd /opt/gitea && docker compose stop gitea # Backup erstellen echo "Erstelle Backup: $BACKUP_NAME" tar -czf "${BACKUP_DIR}/${BACKUP_NAME}" -C "$VOLUME_PATH" . # Gitea wieder starten echo "Starte Gitea..." cd /opt/gitea && docker compose start gitea # Alte Backups löschen echo "Lösche Backups älter als ${RETENTION_DAYS} Tage..." find "$BACKUP_DIR" -name "gitea-backup-*.tar.gz" -mtime +${RETENTION_DAYS} -delete # Backup-Größe anzeigen BACKUP_SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_NAME}" | cut -f1) echo "=== Backup abgeschlossen: ${BACKUP_NAME} (${BACKUP_SIZE}) ===" # Optional: Backup zu externem Speicher kopieren (auskommentiert) # rsync -av "${BACKUP_DIR}/${BACKUP_NAME}" user@backup-server:/backups/gitea/