Skip to content

Instantly share code, notes, and snippets.

@rolfn
Last active October 7, 2023 19:40
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rolfn/4e9d373bb690adc7b1a8717d853190c1 to your computer and use it in GitHub Desktop.
Save rolfn/4e9d373bb690adc7b1a8717d853190c1 to your computer and use it in GitHub Desktop.
Zugriff auf Online-Speicher per »Rclone«

Zugriff auf Online-Speicher per »Rclone«

Das Programm »Rclone« ist geeignet, auf eine Vielzahl von Online-Speicher (»Dropbox«, »Onedrive«, diverse WebDav-Zugänge u.v.a.) zuzugreifen. Gelingt es, diese Online-Speicher beim Einloggen in einen Linux-Rechner automatisch zu mounten, ergeben sich viele bequeme Möglichkeiten, eigene Dateien zu sichern oder auf sie von anderen Orten aus zuzugreifen. Man kann den gesamten Online-Speicher oder Teile davon von »Rclone« verschlüsseln lassen, womit man auch sensible Daten auf wenig verlässlichen Speicherorten unterbringen kann. Hervorzuheben ist, dass die Dokumentation von »Rclone« außergewöhnlich gut verständlich geschrieben ist. Auch kann man die Konfiguration sehr einfach durchführen.

Im Folgenden wird beschrieben, wie man den Zugriff auf ausgewählte Online-Speicher einrichtet. Es wird dabei von Möglichkeiten des Linux-Dienstes »systemd« Gebrauch gemacht. »Rclone« ist unter »openSUSE« im Standard-Repositorium enthalten. Für andere Linux-Distributionen, »MacOS« und »Windows« wird das Programm ebenfalls angeboten.

Mounten und Synchronisieren eines Online-Speichers

Konfiguration des Zugriffs

Wie bei allen anderen Zugriffs-Konfigurationen startet man mit

rclone config

Die zu beantwortenden Fragen sind weitgehend selbsterklärend und führen am Ende zu einer Konfigurationsdatei $HOME/.config/rclone/rclone.conf, die für den Online-Speichers »Dropbox« einen Bereich enthält, der dem Folgenden ähnlich sieht:

[RolfsDropbox]
type = dropbox
app_key =
app_secret =
token = {"access_token":"???????????","token_type":"bearer","expiry":"0001-01-01T00:00:00Z"}

Das »access_token« wird während der Installation von dropbox.com angefordert und für die spätere Verwendung gespeichert. Mit

rclone ls RolfsDropbox:

kann man den Inhalt des Online-Speichers auflisten und z.B. mit

rclone copy MeineDatei.txt RolfsDropbox:/transfer/

eine Datei dorthin kopieren. Näheres siehe Dokumentation von »Rclone«.

Automatisches Mounten des Online-Speichers

Der durch RolfsDropbox: symbolisierte Online-Speichers kann folgendermaßen ins Dateisystem eingebunden werden:

rclone --vfs-cache-mode writes mount RolfsDropbox: $HOME/dropbox

Über den vorher zu erzeugenden Mount-Punkt $HOME/dropbox hat man Zugriff auf den Online-Speicher, solange der gezeigte Befehlsaufruf nicht beendet wird. Um diesen Zustand automatisch zu erreichen, sobald sich der betreffende Nutzer eingeloggt, kann man wie folgt vorgehen.

Anlegen der Datei $HOME/.config/systemd/user/dropbox-mount.service

[Unit]
Description=Dropbox mount with rclone
Documentation=https://rclone.org/docs/

[Service]
Type=simple
Environment=mp="%h/Dropbox.remote"
ExecStartPre=/bin/bash -c 'mkdir -p "$mp"'
ExecStart=/bin/bash -lc 'if $(mountpoint -q "$mp"); then true; else \
 rclone --vfs-cache-mode writes --config %h/.config/rclone/rclone.conf \
 mount RolfsDropbox: $mp; fi'
ExecStop=/bin/bash -c 'if ! $(mountpoint -q "$mp"); then true; else \
  fusermount -zu "$mp"; fi'
Restart=on-abort

[Install]
WantedBy=default.target

Anmerkung: Der bash-Aufruf wurde hier nur deshalb vorgesehen, um dem Programm »Rclone« die üblichen Umgebungsvariablen bekannt zu machen (z.B. $https_proxy). In vielen Fällen kann er entfallen.

Anmelden des Services zum späteren automatischen Start

systemctl --user enable dropbox-mount.service

Start des Services

systemctl --user start dropbox-mount.service

Test

systemctl --user status dropbox-mount.service
journalctl --user-unit dropbox-mount.service 

Synchronisieren eines lokalen Verzeichnisses mit dem Online-Speichers

Anlegen der Datei $HOME/.config/systemd/user/dropbox-sync.service

[Unit]
Description=Dropbox sync with rclone
Documentation=https://rclone.org/docs/

[Service]
Type=simple
ExecStart=/bin/bash -lc "/usr/bin/rclone sync RolfsDropbox: %h/Dropbox \
  --config %h/.config/rclone/rclone.conf"

[Install]
WantedBy=default.target

Anlegen der Datei $HOME/.config/systemd/user/dropbox-sync.timer

[Unit]
Description=Dropbox sync with rclone (Timer)
Documentation=https://rclone.org/docs/

[Timer]
OnActiveSec=20
OnUnitInactiveSec=600

[Install]
WantedBy=default.target

Mit

systemctl --user enable dropbox-sync.timer 
systemctl --user start  dropbox-sync.timer

erreicht man, dass das Verzeichnis $HOME/Dropbox gleich nach dem Einloggen (nach 20s) und danach alle 10min (600s) mit dem Online-Speicher synchronisiert wird. Das Zusammenspiel zwischen dropbox-sync.timer und dropbox-sync.service ist mit einem Cron-Job vergleichbar (siehe dazu »Systemd-Timer als Cron-Alternative«).

Test

systemctl --user status dropbox-sync.timer
journalctl --since today --user-unit mail-sync.service
systemctl --user list-timers

Verschlüsseln eines Online-Speichers

Es soll beispielsweise erreicht werden, dass ein einzelnes Verzeichnis unter Microsofts »OneDrive« nur verschlüsselte Dateien enthält. Zuerst muss der grundsätzliche Zugang zu »OneDrive« eingerichtet werden, was ganz ähnlich zu dem Dropbox-Zugang geschieht. Der Eintrag in $HOME/.config/rclone/rclone.conf sieht etwa so aus:

[RolfsOnedrive]
type = onedrive
client_id = 
client_secret = 
token = {"access_token":"???????","token_type":"bearer","refresh_token":"???????",
"expiry":"2018-03-21T18:32:55.066134442+01:00"}

Im nächsten Schritt muss eine weitere Zugangsdefinition erzeugt werden, die sich »Encrypt/Decrypt a remote« nennt. Sie muss einem bereits existierenden Online-Zugang zugeordnet werden. Es soll in diesem Beispiel das zuvor auf »Onedrive« angelegte Verzeichnis enigma benutzt werden. Für die später automatisch durchgeführte Ver- und Entschlüsselung kann angegeben werden, ob außer dem Dateiinhalt auch Datei- und Verzeichnisnamen verschlüsselt werden sollen. Zu weiteren Eingaben wie z.B. die Stärke der Verschlüsselung findet man in der Dokumentation Hinweise. Es entsteht nun ein weiterer Eintrag in $HOME/.config/rclone/rclone.conf der folgenden Art:

[RolfsOnedriveCrypt]
type = crypt
remote = RolfsOnedrive:enigma
filename_encryption = standard
directory_name_encryption = false
password = ???????
password2 = ???????

Bindet man so wie oben erläutert RolfsOnedrive: und RolfsOnedriveCrypt: ins Dateisystem ein, so erreicht man über den Crypt-Zugang (z.B. $HOME/onedrive.enigma) das transparente Ver- und Entschlüsseln beim Hin- bzw. beim Herkopieren. Über den direkten Zugang (z.B. $HOME/onedrive/enigma) sieht man dagegen nur verschlüsselte Dateien genau wie beim Web-Zugang per Browser.

Anders als in diesem Beispiel kann auch der komplette Online-Zugang verschlüsselt werden.

Grafische Oberfläche »Rclone Browser«

Einige Funktionen des Programms »Rclone« lassen sich auch über die grafische Oberfläche »Rclone Browser« ausführen. Die Entwicklung des »Rclone Browsers« begann hier und wird derzeit hier weitergeführt.

Installation unter OpenSUSE

Die neueste Version als Debian-Paket von hier herunter laden und ins rpm-Format wandeln

alien --to-rpm rclone-browser_x.y.z-amd64.deb

und installieren:

zypper install rclone-browser-x.y.z.x86_64.rpm

Installation unter Ubuntu

Die neueste Version als Debian-Paket von hier herunter laden und installieren:

apt install ./rclone-browser_x.y.z-amd64.deb

Grafische Oberfläche für Android

Von hier die neueste Version der App »RcloneExplorer« herunterladen (armv7a = Arm32, armv8a = Arm64) und zum Smartphone kopieren und dort zum Installieren anklicken. Der Autor plant, diese App künftig zur einfacheren Installation im App-Store »F-Droid« anzubieten. Es empfiehlt sich, die bereits auf dem PC existierende Datei rclone.conf auch auf das Smartphone zu kopieren und diese beim Start der App einlesen zu lassen. Im Ergebnis dessen kann das Smartphone auf dieselben Online-Speicher zugreifen wie »Rclone« auf dem PC.


Erfolgreich getestet wurden auch der Zugang per »WebDAV« (»GMX mediacenter«), zu »GoogleDrive«, zu einem S3-Online-Speicher und zu einem anonymen FTP-Server.

Die Konfigurationsdatei $HOME/.config/rclone/rclone.conf kann leicht auf einem anderen Rechner verwendet werden, um exakt dieselben Zugangsmöglichkeiten auch dort nutzen zu können.

Rolf (2019/10)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment