From c3f982609aef0a10cea5784ebba8599561ade658 Mon Sep 17 00:00:00 2001 From: alf Date: Thu, 26 Mar 2026 08:55:00 +0000 Subject: [PATCH] =?UTF-8?q?rcloning=5Fparam.sh=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rcloning_param.sh | 144 ---------------------------------------------- 1 file changed, 144 deletions(-) delete mode 100644 rcloning_param.sh diff --git a/rcloning_param.sh b/rcloning_param.sh deleted file mode 100644 index 69b7d29..0000000 --- a/rcloning_param.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash -# rcloning_param.sh -# Verwendung: bash rcloning_param.sh [sync|copy] -# Beispiel: bash rcloning_param.sh ptv-nextcloud:/DPV spzssh:/srv/.../Ziel/ sync - -# Voraussetzungen: rclone installiert -# und GIT_PFAD wurde in .bashrc gesetzt. -GIT_PFAD="$HOME/Dokumente/Gitea" -source "$GIT_PFAD/logger/logger.sh" -LOGBUCH="$GIT_PFAD/logger/Logs/rcloning.log" -log_init "$LOGBUCH" -log_start - -# --- Parameter-Auswertung --- -usage() { - echo "Verwendung: $(basename "$0") [sync|copy]" - echo "" - echo " QUELLE rclone-Remote und Pfad, z. B. ptv-nextcloud:/DPV" - echo " ZIEL rclone-Remote und Pfad, z. B. spzssh:/srv/.../Ziel/" - echo " Modus Optional: sync (Standard) oder copy" - echo "" - echo "Beispiel:" - echo " $(basename "$0") ptv-nextcloud:/DPV spzssh:/srv/.../Ziel/ sync" - exit 1 -} - -if [ -z "$1" ] || [ -z "$2" ]; then - log_error "Fehler: QUELLE und ZIEL müssen als Parameter übergeben werden." - usage -fi - -QUELLE="$1" -ZIEL="$2" -MODUS="${3:-sync}" # Dritter Parameter optional, Standard: sync - -# Validierung Modus -if [ "$MODUS" != "sync" ] && [ "$MODUS" != "copy" ]; then - log_error "Fehler: Ungültiger Modus '$MODUS'. Erlaubt: sync oder copy." - usage -fi - -# Prüfen ob ZIEL ein rclone-Remote ist (Muster: "remotename:/pfad") -if ! echo "$ZIEL" | grep -qE '^[A-Za-z0-9_][A-Za-z0-9_.-]*:'; then - log_error "Fehler: ZIEL '$ZIEL' ist kein gültiger rclone-Remote. Erwartet: 'remotename:/pfad'." - log_error "Hinweis: Als ZIEL sind nur rclone-Remotes erlaubt (wegen --backup-dir)." - exit 1 -fi - -# Erreichbarkeit des Remotes testen -log_info "Prüfe Erreichbarkeit von ZIEL: $ZIEL" -if ! rclone lsd "$ZIEL" > /dev/null 2>&1; then - log_error "Fehler: ZIEL '$ZIEL' ist nicht erreichbar. Remote offline oder Pfad ungültig." - exit 1 -fi -log_info "ZIEL erreichbar." - -# --- Einstellungen --- -IST_TEST="nein" # ja: es wird nichts übertragen -Archivordner="$(date +%y-%m-%d-%H)" -ZIEL_CLEAN="${ZIEL%/}" # Trailing Slash entfernen -ARCHIV="${ZIEL_CLEAN}_Archiv/$Archivordner" -# Ergibt z. B.: spzssh:/srv/.../DPVonNextcloud_Archiv/25-03-26-14 -LOGLVL="INFO" # Möglich: DEBUG, INFO, ERROR, NOTICE -IGNORE="" # leeren, wenn nicht ignoriert werden soll -EXCLUDE="--exclude=.git/" # Fest ausgeschlossene Pfade - -# rclone.ignore aus QUELLE laden (lokal oder Remote) -EXCLUDE_FROM="" -TMP_IGNORE="" -if echo "$QUELLE" | grep -qE '^[A-Za-z0-9_][A-Za-z0-9_.-]*:'; then - # QUELLE ist ein Remote → Datei temporär herunterladen - TMP_IGNORE="$(mktemp)" - if rclone copyto "$QUELLE/rclone.ignore" "$TMP_IGNORE" 2>/dev/null; then - EXCLUDE_FROM="--exclude-from=$TMP_IGNORE" - log_info "rclone.ignore von Remote geladen: $QUELLE/rclone.ignore" - else - log_info "Keine rclone.ignore in Quelle gefunden, wird übersprungen." - rm -f "$TMP_IGNORE" - TMP_IGNORE="" - fi -else - # QUELLE ist lokal → direkt prüfen - if [ -f "$QUELLE/rclone.ignore" ]; then - EXCLUDE_FROM="--exclude-from=$QUELLE/rclone.ignore" - log_info "rclone.ignore gefunden: $QUELLE/rclone.ignore" - else - log_info "Keine rclone.ignore in Quelle gefunden, wird übersprungen." - fi -fi - -# --- Programm --- -log_info "Starte Cloning..." - -if [ "$IST_TEST" = "ja" ]; then - DRYRUN="--dry-run" -else - DRYRUN="" -fi - -log_info "Quelle: $QUELLE --> Ziel: $ZIEL" -log_info "Archiv: $ARCHIV" -log_info "Modus: $MODUS" -log_info "Log-Level: $LOGLVL" -log_info "Ignoriert (fest): $EXCLUDE" -log_info "Ignoriert (rclone.ignore): ${EXCLUDE_FROM:-keiner}" -log_info "Bestehende Dateien überspringen: $IGNORE" -log_info "Testlauf: $IST_TEST" -log_info "Starte..." - -rclone -P "$MODUS" "$QUELLE" "$ZIEL" \ - --backup-dir="$ARCHIV" \ - --log-file="$LOGBUCH" \ - --log-level="$LOGLVL" \ - $EXCLUDE \ - $EXCLUDE_FROM \ - $IGNORE \ - $DRYRUN - -log_error "ERR: $?" - -# Temporäre ignore-Datei aufräumen (falls Remote-Quelle) -[ -n "$TMP_IGNORE" ] && rm -f "$TMP_IGNORE" - -log_info "Archiv packen..." -rclone archive create "$ARCHIV/" "$ARCHIV.zip" -P \ - --log-level="$LOGLVL" \ - --log-file="$LOGBUCH" -ERR="$?" - -log_info "Fertig. ERR: $ERR" - -if [ "$ERR" = "0" ]; then - log_info "Archiv-Verzeichnis löschen..." - rclone purge "$ARCHIV/" -P --log-file="$LOGBUCH" --log-level=DEBUG - log_info "Fertig. ERR: $?" -else - if [ "$ERR" = "3" ]; then - log_error "Es wurde kein Archiv erstellt. Wahrscheinlich keine zu archivierenden Dateien vorhanden." - else - log_error "Beim Erstellen des Archivs kam es zu einem Problem." - fi -fi - -log_end \ No newline at end of file