Files
universalrclone/README.md
2026-03-26 07:50:29 +00:00

3.5 KiB

rcloning.sh

Ein Bash-Script zum automatisierten Synchronisieren von Dateien zwischen zwei rclone-Remotes mit integrierter Archivierung und strukturiertem Logging.


Funktionsweise

Das Script führt folgende Schritte in Sequenz aus:

  1. Synchronisation / Kopieren — Überträgt Dateien von QUELLE nach ZIEL per rclone sync oder rclone copy.
  2. Archivierung — Dateien, die am Ziel überschrieben oder gelöscht werden, landen vorher automatisch in einem stündlich benannten Archivordner (JJ-MM-TT-HH).
  3. ZIP-Erstellung — Das Archivverzeichnis wird als .zip gepackt.
  4. Aufräumen — Das Archivverzeichnis wird nach erfolgreichem Packen gelöscht; bei Fehlercode 3 (kein Archiv nötig, da keine Änderungen) wird eine entsprechende Info geloggt.

Voraussetzungen

Anforderung Hinweis
rclone Muss installiert und konfiguriert sein
logger.sh Eigenes Logging-Modul, Pfad über GIT_PFAD
GIT_PFAD Umgebungsvariable, in .bashrc gesetzt (z. B. ~/Dokumente/Gitea)
Konfigurierte Remotes ptv-nextcloud und spzssh müssen in ~/.config/rclone/rclone.conf vorhanden sein

Konfiguration

Alle Einstellungen befinden sich im Abschnitt # Einstellungen # am Anfang des Scripts:

Variable Beschreibung Beispielwert
IST_TEST Testlauf ohne Übertragung (--dry-run) ja / nein
QUELLE Quell-Remote und -Pfad ptv-nextcloud:/DPV
ZIEL Ziel-Remote und -Pfad spzssh:/srv/.../DPVonNextcloud/
ARCHIV Zielort für archivierte (überschriebene/gelöschte) Dateien spzssh:/srv/.../Archiv/JJ-MM-TT-HH
MODUS Übertragungsmodus sync oder copy
LOGLVL Detailgrad des rclone-Logs DEBUG, INFO, NOTICE, ERROR
IGNORE Optionaler rclone-Parameter zum Überspringen vorhandener Dateien leer lassen, wenn nicht benötigt
EXCLUDE Auszuschließende Pfade/Dateien .git/

Hinweis: Bei MODUS=sync werden am Ziel Dateien gelöscht, die in der Quelle nicht mehr existieren. Gelöschte/überschriebene Dateien werden vorher in ARCHIV gesichert.


Logging

Das Script nutzt logger.sh für strukturiertes Logging. Die Logdatei liegt unter:

$GIT_PFAD/logger/Logs/rcloning.log

Zusätzlich schreibt rclone direkt in dieselbe Datei (--log-file). Log-Level für rclone und das interne Logger-Modul werden separat über LOGLVL gesteuert.


Archiv-Logik

Der Archivordner wird nach Datum und Stunde benannt:

Archiv/
└── 25-03-26-14/        ← Verzeichnis (temporär)
    └── ...
25-03-26-14.zip         ← Gepacktes Archiv (dauerhaft)
Exit-Code rclone archive create Verhalten
0 Erfolg → temporäres Verzeichnis wird gelöscht
3 Kein Archiv erstellt (keine überschriebenen/gelöschten Dateien) → Info-Meldung
Sonstige Fehler → Fehlermeldung im Log, Verzeichnis bleibt erhalten

Verwendung

# Direkter Aufruf
bash rcloning.sh

# Als Cronjob (täglich um 02:00 Uhr)
0 2 * * * /bin/bash /pfad/zu/rcloning.sh

Für einen Testlauf ohne tatsächliche Übertragung IST_TEST="ja" setzen.


Bekannte Einschränkungen

  • rclone archive ist ein experimentelles Plugin/Subcommand — nicht in allen rclone-Versionen standardmäßig verfügbar.
  • Der Syntax if [ $IST_TEST = "ja"] enthält einen fehlenden Leerzeichen vor ] — sollte zu [ $IST_TEST = "ja" ] korrigiert werden.
  • Pfade im ZIEL und ARCHIV sind aktuell fest im Script kodiert und sollten bei Änderung der Disk-UUID angepasst werden.