README.MD hinzugefügt
This commit is contained in:
74
README.MD
Normal file
74
README.MD
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
# 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.
|
||||||
Reference in New Issue
Block a user