- Docker-Compose Konfiguration - Setup-Script für LXC Container - Backup-Script mit Rotation - Installationsanleitung 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
47 lines
1.3 KiB
Bash
47 lines
1.3 KiB
Bash
#!/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/
|