#!/bin/bash # --- Zentrale Logging-Funktion einbinden --- # Passe den Pfad an, wenn logger.sh woanders liegt source /root/Scripte/logger/logger.sh # --- Skriptspezifische Konfiguration --- SCRIPT_NAME="Gitea Backup (rclone zu JottaCloud)" SCRIPT_LOG_FILE="/root/gitea_backup.log" # Dediziertes Log für dieses Skript # Verzeichnis, wo deine docker-compose.yml liegt GITEA_DIR="/home/alf/docker/gitea" # <-- ANPASSEN! Dein Gitea Docker Compose Verzeichnis # Name deines rclone Remote für JottaCloud RCLONE_REMOTE_NAME="jotta" # Zielpfad im JottaCloud Remote (z.B. ein Ordner namens "Gitea" im Root) RCLONE_CLOUD_PATH="/Archiv/Gitea" # <-- ANPASSEN! # Lokale Datenpfade für Gitea und die Datenbank LOCAL_GITEA_DATA_PATH="${GITEA_DIR}/data/" LOCAL_GITEA_DB_PATH="${GITEA_DIR}/database/" # --- Logger initialisieren (muss am Anfang des Skripts passieren) --- log_init "${SCRIPT_LOG_FILE}" # --- Skript Start --- log_start "${SCRIPT_NAME}" # Gitea-Dienste stoppen für konsistentes Backup log_info "Stoppe Gitea-Dienste..." cd "${GITEA_DIR}" && docker compose stop # Prüfen, ob das Stoppen erfolgreich war if [ $? -ne 0 ]; then log_error "Gitea-Dienste konnten nicht gestoppt werden. Backup abgebrochen." exit 1 fi # Gitea-Daten sichern log_info "Synchronisiere Gitea-Daten zu JottaCloud..." rclone sync -P "${LOCAL_GITEA_DATA_PATH}" "${RCLONE_REMOTE_NAME}:${RCLONE_CLOUD_PATH}/data" --log-file=/root/log.txt if [ $? -ne 0 ]; then log_warn "Fehler beim rclone Sync der Gitea-Daten aufgetreten." fi # Datenbank-Daten sichern log_info "Synchronisiere PostgreSQL-Daten zu JottaCloud..." rclone sync -P "${LOCAL_GITEA_DB_PATH}" "${RCLONE_REMOTE_NAME}:${RCLONE_CLOUD_PATH}/database" 2>/dev/null if [ $? -ne 0 ]; then log_warn "Fehler beim rclone Sync der Datenbank-Daten aufgetreten." fi # Gitea-Dienste wieder starten log_info "Starte Gitea-Dienste..." cd "${GITEA_DIR}" && docker compose start # Prüfen, ob der Start erfolgreich war if [ $? -ne 0 ]; then log_error "Gitea-Dienste konnten nicht gestartet werden. Bitte manuell prüfen." exit 1 fi log_end "${SCRIPT_NAME}"