rcloning_param.sh hinzugefügt
This commit is contained in:
99
rcloning_param.sh
Normal file
99
rcloning_param.sh
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# rcloning_param.sh
|
||||||
|
# Verwendung: bash rcloning_param.sh <QUELLE> <ZIEL> [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") <QUELLE> <ZIEL> [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
|
||||||
|
|
||||||
|
# --- 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=".git/" # Auszuschließende Dateien und Verzeichnisse
|
||||||
|
|
||||||
|
# --- 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: $EXCLUDE"
|
||||||
|
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" \
|
||||||
|
$IGNORE \
|
||||||
|
$DRYRUN
|
||||||
|
|
||||||
|
log_error "ERR: $?"
|
||||||
|
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user