☁️rclone – „rsync für Cloud-Speicher“
rclone spricht mit über 70 Speicherdiensten über eine gemeinsame Oberfläche: Objektspeicher (S3, B2, Azure …), Cloud-Laufwerke (Google Drive, OneDrive, Dropbox), WebDAV/Nextcloud, SFTP und lokale Platten. Statt Byte-Deltas überträgt rclone ganze Dateien – dafür parallel, mit Hash-Prüfung und optional verschlüsselt.
🔌Remotes: Name + Backend + Zugangsdaten
# ~/.config/rclone/rclone.conf (nur Platzhalter!) [nas] type = sftp host = nas.example.org user = backup key_file = ~/.ssh/id_ed25519_backup [b2] type = b2 account = <KEY_ID> key = <APPLICATION_KEY> [nextcloud] type = webdav url = https://cloud.example.org/remote.php/dav/files/<BENUTZER>/ vendor = nextcloud user = <BENUTZER> pass = <MIT rclone obscure VERSCHLEIERT> [tresor] type = crypt remote = b2:mein-backup-bucket/verschluesselt filename_encryption = standard directory_name_encryption = true password = <MIT rclone obscure VERSCHLEIERT> password2 = <SALT, EBENFALLS VERSCHLEIERT>
Anlegen mit rclone config (Assistent). Alle Werte hier sind Platzhalter.
remote:pfad – z. B. b2:mein-backup-bucket/fotos,nas:/srv/daten, nextcloud:Dokumente. Ohne Doppelpunkt ist es ein lokaler Pfad. Mit rclone listremotes sieht man alle Remotes, mit rclone lsd remote: die obersten Ordner.pass/password sind nur verschleiert (rclone obscure, AES-CTR mit festem Schlüssel) – nicht sicher. Die ganze Datei lässt sich mit rclone config encryption set verschlüsseln; das Passwort kommt dann aus RCLONE_CONFIG_PASS.RCLONE_CONFIG_B2_TYPE=b2 …) oder als Verbindungszeichenkette::sftp,host=nas.example.org,user=backup:/srv/daten.🗄️Backends im Vergleich
| Backend | type | Hash | ModTime | Server-Copy | Groß/klein egal | Besonderheit |
|---|---|---|---|---|---|---|
| Lokales Dateisystem | local | alle | DR/W | ✖ | ✖ | Kein Remote nötig: normale Pfade wie /srv/daten. Hashes werden bei Bedarf berechnet. |
| Amazon S3 & kompatible (MinIO, Wasabi …) | s3 | md5 | R/W | ✔ | ✖ | MD5 = ETag bei einfachen Uploads; bei Multipart-Uploads speichert rclone die MD5 in den Metadaten. Mtime steht in den Metadaten (X-Amz-Meta-Mtime). |
| Backblaze B2 | b2 | sha1 | R/W | ✔ | ✖ | SHA-1 je Datei; alte Versionen bleiben je nach Bucket-Lebenszyklus erhalten. |
| WebDAV (Nextcloud, ownCloud …) | webdav | sha1, md5 | R/W | ✔ | ✖ | Reines WebDAV kennt weder Mtime noch Hashes – erst mit vendor = nextcloud/owncloud/fastmail unterstützt rclone SHA-1/MD5 und Änderungszeiten. |
| SFTP | sftp | md5, sha1 | DR/W | ✔ | ✖ | Hashes nur, wenn per SSH-Shell md5sum/sha1sum ausgeführt werden dürfen. |
| Google Drive | drive | md5, sha1, sha256 | DR/W | ✔ | ✖ | Erlaubt doppelte Dateinamen im selben Ordner (→ rclone dedupe). Google-Docs haben keine echte Größe. |
| Microsoft OneDrive | onedrive | quickxor | DR/W | ✔ | ✔ | Eigener QuickXorHash; Groß-/Kleinschreibung wird nicht unterschieden, einige Zeichen werden ersetzt. |
| Dropbox | dropbox | dropbox | R/W | ✔ | ✔ | Eigener Dropbox-Content-Hash. |
| Crypt (Hülle um ein anderes Remote) | crypt | — | wie darunter | ✔ | ✖ | Verschlüsselt Inhalt (und optional Namen). Hashes des Klartexts sind nicht verfügbar – Vergleich über Größe + Mtime; `rclone cryptcheck` prüft trotzdem. |
ModTime: R/W = lesen und nachträglich setzen, DR/W = auch für Verzeichnisse, R = nur beim Hochladen setzbar, – = nur Upload-Zeit. Quelle: rclone.org/overview (Stand rclone 1.7x).
--checksum vergleicht Größe + Hash und ist ideal zwischen zwei Remotes mit gleichem Hash (z. B. S3 → S3), weil dort keine Daten gelesen werden müssen.rclone copy s3:alt s3:neu lädt nichts herunter – der Anbieter kopiert selbst. Das klappt nur, wenn Quelle und Ziel dasselbe Remote sind und das Backend „Copy“ unterstützt. Sonst: herunterladen und wieder hochladen.⌨️Die wichtigsten Befehle
rclone copyKopiert neue/geänderte Dateien ins Ziel. Löscht nie etwas.
rclone copy /srv/daten b2:backup-bucket/daten -P
rclone syncMacht das Ziel identisch zur Quelle – löscht im Ziel Überzähliges (standardmäßig erst nach allen Transfers).
rclone sync /srv/daten b2:backup-bucket/daten --dry-run
rclone moveWie copy, löscht danach die Quelldateien. Mit --delete-empty-src-dirs auch leere Quellordner.
rclone move /srv/eingang nextcloud:Archiv --min-age 30d
rclone bisyncZwei-Wege-Abgleich. Erster Lauf mit --resync, danach ohne. Sicherheitsbremse --max-delete (Standard 50 %).
rclone bisync ~/Dokumente nextcloud:Dokumente --resync --dry-run
rclone checkVergleicht Größe und Hash, ändert nichts. Für Crypt-Remotes: cryptcheck.
rclone check /srv/daten b2:backup-bucket/daten --one-way
rclone mountRemote per FUSE als Laufwerk einhängen. Für normale Programme meist --vfs-cache-mode writes oder full nötig.
rclone mount nextcloud: ~/cloud --vfs-cache-mode writes --daemon
rclone serveEin Remote über ein Protokoll bereitstellen: http, webdav, sftp, ftp, s3, nfs, dlna, restic, docker.
rclone serve webdav tresor: --addr 127.0.0.1:8080 --user demo --pass <PASSWORT>
rclone ncduBelegten Platz eines Remotes interaktiv im Terminal erkunden (wie ncdu).
rclone ncdu b2:backup-bucket
Wie rclone sync intern vorgeht, zeigt der Schritt-Debugger „rclone sync“.
🔐Crypt-Remote: verschlüsselt in der Cloud
📦 Dateiinhalt: Header + 64-KiB-Chunks
16 B
13 B
Formel: 32 + Klartext + 16 × ⌈Klartext / 65 536⌉. Jeder Chunk ist eine NaCl-SecretBox (XSalsa20 + Poly1305), die Nonce wird je Chunk hochgezählt. Aus der Objektgröße lässt sich die Klartextgröße exakt zurückrechnen – die Länge ist also nicht geheim (auch die Änderungszeit nicht).
🏷️ Dateinamen: filename_encryption
| im Crypt-Remote | liegt beim Anbieter als |
|---|---|
| liste.txt | l3rqh16a02kg71smbp5ug3sj28 |
| fotos | ue69aehlulqrtsqr4st2jojddg |
| fotos/berg.jpg | ue69aehlulqrtsqr4st2jojddg/asjvo9qpm19tc1jm8ur5tthb9k |
| fotos/neu.jpg | ue69aehlulqrtsqr4st2jojddg/jcecaa5j2fjb6aaqsbb3qegjas |
| urlaub.jpg | tkv1u9fpibf9oebh6mv3aiqdd0 |
| urlaub.jpeg | rscr6gqdha806r5ucsocr57m1s |
- Jedes Pfadsegment einzeln: PKCS#7-Padding, AES-256 im EME-Modus, dann Base32 nach RFC 4648 (Alphabet 0–9 und a–v, kleingeschrieben, ohne „=“) – funktioniert auch bei Anbietern, die Groß-/Kleinschreibung nicht unterscheiden.
- Deterministisch: gleicher Name → gleicher verschlüsselter Name (sonst könnte rclone nichts wiederfinden). „fotos“ ergibt immer
ue69…. - Kein gemeinsamer Präfix: „urlaub.jpg“ und „urlaub.jpeg“ sehen völlig verschieden aus.
- Namen bis etwa 143 Zeichen sind überall unproblematisch.
Echte Ausgaben von rclone cryptdecode --reverse (v1.75.1) mit dem Beispielpasswort „beispielpasswort“ und Salz „beispielsalz“. Schlüssel: scrypt (N=16384, r=8, p=1) aus password + password2 → 80 Byte Schlüsselmaterial.
# Beispiel: NAS → B2, verschlüsselt [b2] type = b2 account = <KEY_ID> key = <APPLICATION_KEY> [tresor] type = crypt remote = b2:mein-backup-bucket/verschluesselt filename_encryption = standard password = <VERSCHLEIERT> password2 = <VERSCHLEIERT> $ rclone sync /srv/daten tresor:daten --dry-run $ rclone cryptcheck /srv/daten tresor:daten
🧩Chunker und Union
🧱 chunker – große Dateien zerlegen
Teilt Dateien über chunk_size (Standard 2 GiB) in Stücke namensDATEI.rclone_chunk.001, .002 … – für Anbieter mit Größenlimit pro Datei. Nach außen sieht man wieder eine Datei.
[gross] type = chunker remote = nextcloud:Archiv chunk_size = 1Gi
🧺 union – mehrere Remotes als eins
Fasst „Upstreams“ zu einem Dateibaum zusammen. Richtlinien entscheiden, wohin geschrieben wird: Standard create_policy = epmfs(vorhandener Pfad, meister freier Platz), action_policy = epall, search_policy = ff.
[alles] type = union upstreams = /mnt/platte1 /mnt/platte2 b2:bucket:ro
🎛️Nützliche Flags
--dry-run / -nnichts ändern, nur protokollieren, was passieren würde--interactive / -ivor jeder ändernden Aktion nachfragen--transfers 4parallele Übertragungen (Standard 4)--checkers 8parallele Vergleiche (Standard 8)--checksum / -cGröße + Hash statt Größe + ModTime vergleichen--size-onlynur die Größe vergleichen--modify-window 2sZeitabweichung tolerieren (z. B. FAT)--filter-from regeln.txtFilterregeln (+/-) aus Datei, von oben nach unten--bwlimit "08:00,512k 18:00,30M 23:00,off"Bandbreite, auch als Zeitplan; Einheit Byte/s (KiB/s ohne Suffix)--backup-dir b2:alt/2026-09-24überschriebene/gelöschte Dateien dorthin verschieben--max-delete 100höchstens so viele Löschungen--fast-listrekursives Listing in wenigen Aufrufen (spart API-Aufrufe, braucht RAM)-P / --progressFortschritt live anzeigen--log-file rclone.log -vProtokoll in eine Datei# erste passende Regel gewinnt - .DS_Store - *.tmp - /Papierkorb/** + /Dokumente/** + /Fotos/** - *
--include/--excludenicht mischen – rclone ordnet nach Flag-Typ, nicht nach Position. Besser:--filterbzw.--filter-from.--includehängt automatisch- **an.- Ordnerinhalt ausschließen:
- /ordner/**; eine Verzeichnisregel- /ordner/erspart rclone zusätzlich das Auflisten des Ordners. - Test:
rclone ls quelle: --filter-from regeln.txtbzw.-vv --dump filters.
🚦Rückgabecodes
Quelle: rclone.org/docs, „List of exit codes“.