rcloning.sh aktualisiert
This commit is contained in:
45
rcloning.sh
45
rcloning.sh
@ -5,9 +5,23 @@
|
||||
|
||||
# Voraussetzungen: rclone installiert
|
||||
# und GIT_PFAD wurde in .bashrc gesetzt.
|
||||
GIT_PFAD="$HOME/Dokumente/Gitea"
|
||||
|
||||
# --- Einstellungen ---
|
||||
QUELLE="$1"
|
||||
ZIEL="$2"
|
||||
MODUS="${3:-sync}" # Dritter Parameter optional, Standard: sync
|
||||
IST_TEST="nein" # ja: es wird nichts übertragen
|
||||
Archivordner="$(date +%y-%m-%d-%H)"
|
||||
ZIEL_CLEAN="${ZIEL%/}" # Trailing Slash entfernen
|
||||
QUELLE_CLEAN="${QUELLE%/}"
|
||||
ARCHIV="${ZIEL_CLEAN}_Archiv/$Archivordner"
|
||||
# Ergibt z. B.: spzssh:/srv/.../DPVonNextcloud_Archiv/25-03-26-14
|
||||
LOGLVL="INFO" # Möglich: DEBUG, INFO, ERROR, NOTICE
|
||||
|
||||
GIT_PFAD="$HOME/Dokumente/Gitea" # Je nach Gerät mglw. anders
|
||||
source "$GIT_PFAD/logger/logger.sh"
|
||||
LOGBUCH="$GIT_PFAD/logger/Logs/rcloning.log"
|
||||
|
||||
log_init "$LOGBUCH"
|
||||
log_start
|
||||
|
||||
@ -29,10 +43,6 @@ if [ -z "$1" ] || [ -z "$2" ]; then
|
||||
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."
|
||||
@ -54,25 +64,16 @@ if ! rclone lsd "$ZIEL" > /dev/null 2>&1; then
|
||||
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
|
||||
if rclone copyto "$QUELLE_CLEAN/rclone.ignore" "$TMP_IGNORE" 2>/dev/null; then
|
||||
EXCLUDE_FROM="--exclude-from=$TMP_IGNORE"
|
||||
log_info "rclone.ignore von Remote geladen: $QUELLE/rclone.ignore"
|
||||
log_info "rclone.ignore von Remote geladen: $QUELLE_CLEAN/rclone.ignore"
|
||||
log_info "Temporäres Verzeichnis: $TMP_IGNORE"
|
||||
else
|
||||
log_info "Keine rclone.ignore in Quelle gefunden, wird übersprungen."
|
||||
rm -f "$TMP_IGNORE"
|
||||
@ -80,9 +81,9 @@ if echo "$QUELLE" | grep -qE '^[A-Za-z0-9_][A-Za-z0-9_.-]*:'; then
|
||||
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"
|
||||
if [ -f "$QUELLE_CLEAN/rclone.ignore" ]; then
|
||||
EXCLUDE_FROM="--exclude-from=$QUELLE_CLEAN/rclone.ignore"
|
||||
log_info "rclone.ignore gefunden: $QUELLE_CLEAN/rclone.ignore"
|
||||
else
|
||||
log_info "Keine rclone.ignore in Quelle gefunden, wird übersprungen."
|
||||
fi
|
||||
@ -101,9 +102,7 @@ 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..."
|
||||
|
||||
@ -111,9 +110,7 @@ rclone -P "$MODUS" "$QUELLE" "$ZIEL" \
|
||||
--backup-dir="$ARCHIV" \
|
||||
--log-file="$LOGBUCH" \
|
||||
--log-level="$LOGLVL" \
|
||||
$EXCLUDE \
|
||||
$EXCLUDE_FROM \
|
||||
$IGNORE \
|
||||
$DRYRUN
|
||||
|
||||
log_error "ERR: $?"
|
||||
|
||||
Reference in New Issue
Block a user