Files
rclonecloner/README.MD
2026-03-09 12:09:44 +00:00

74 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# rcloner.sh
Ein Shell-Script zur automatisierten Verzeichnissicherung mit [rclone](https://rclone.org/). Es synchronisiert ein lokales Quellverzeichnis mit einem Remote-Repository, archiviert dabei überschriebene oder gelöschte Dateien und komprimiert das Archiv anschließend zu einer ZIP-Datei.
---
## Funktionsweise
Das Script führt bei jedem Aufruf drei Schritte aus:
1. **Synchronisation** Das Quellverzeichnis wird mit dem Zielverzeichnis auf dem Remote synchronisiert (`rclone sync`). Dateien, die dabei überschrieben oder gelöscht würden, werden nicht einfach verworfen, sondern in ein zeitgestempeltes Archiv-Verzeichnis auf dem Remote verschoben (`--backup-dir`).
2. **Archiv packen** Das Archiv-Verzeichnis wird zu einer ZIP-Datei komprimiert (`rclone archive create`).
3. **Archiv-Verzeichnis löschen** Das nun gepackte, temporäre Archiv-Verzeichnis wird vom Remote entfernt (`rclone purge`).
Alle Schritte werden in einer Logdatei protokolliert.
---
## Voraussetzungen
- [rclone](https://rclone.org/install/) installiert und im `PATH` verfügbar
- Mindestens ein rclone-Remote bereits konfiguriert (`rclone config`)
---
## Konfiguration
Vor dem ersten Einsatz müssen die Variablen im Abschnitt **Einstellungen** am Anfang des Scripts angepasst werden:
| Variable | Beschreibung | Beispiel |
|---|---|---|
| `REPO` | Name des konfigurierten rclone-Remotes | `mein-cloud-speicher` |
| `REPO_DIR` | Zielverzeichnis auf dem Remote | `Backups/Dokumente` |
| `QUELLE` | Lokales Quellverzeichnis | `/home/user/Dokumente` |
| `ARCHIV_DIR` | Archiv-Verzeichnis auf dem Remote | `Archiv` *(Standard)* |
| `ARCHIV` | Name des Archiv-Unterverzeichnisses | `2025-06-01-14-30` *(automatisch, Zeitstempel)* |
| `LOGBUCH` | Pfad zur Logdatei | `$HOME/Dokumente/log.log` *(Standard)* |
| `LOGLEVEL` | rclone-Loglevel für Sync und Packen | `INFO` *(Standard)* |
> **Hinweis:** `REPO` muss dem exakten Namen eines bereits mit `rclone config` angelegten Remotes entsprechen. Das Archiv-Verzeichnis (`ARCHIV`) wird automatisch als Zeitstempel im Format `YYYY-MM-DD-HH-MM` generiert.
---
## Verwendung
Script ausführbar machen und starten:
```bash
chmod +x rcloner.sh
./rcloner.sh
```
Für automatische, regelmäßige Sicherungen empfiehlt sich ein Cron-Job:
```bash
# Beispiel: täglich um 02:00 Uhr
0 2 * * * /pfad/zu/rcloner.sh
```
---
## Logging
Alle Ausgaben werden sowohl auf der Konsole als auch in die unter `LOGBUCH` konfigurierte Datei geschrieben. Jeder Lauf wird mit Zeitstempel und Trennlinien abgegrenzt. Der Loglevel für den `purge`-Schritt (Archiv-Verzeichnis löschen) ist fest auf `DEBUG` gesetzt, um maximale Transparenz bei destruktiven Operationen zu gewährleisten.
---
## Hinweise
- Das Script verwendet `rclone sync`, d. h. Dateien, die lokal nicht mehr vorhanden sind, werden auf dem Remote **gelöscht** jedoch erst nach Ablage im Archiv.
- Es wird empfohlen, das Script vor dem produktiven Einsatz mit einem Test-Remote und einem Test-Verzeichnis zu erproben.
- Die Logdatei wächst mit jedem Lauf. Eine regelmäßige Rotation (z. B. via `logrotate`) wird empfohlen.