Skip to content

Instantly share code, notes, and snippets.

@pbt001
Forked from rolfn/Rclone.md
Created January 19, 2019 21:46
Show Gist options
  • Save pbt001/c82f6784690c0a3bab2bd2551af52303 to your computer and use it in GitHub Desktop.
Save pbt001/c82f6784690c0a3bab2bd2551af52303 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 (»Owncloud/Nextcloud«, »Dropbox«, »Onedrive«, diverse WebDav-Zugänge u.v.a.) zuzugreifen. Gelingt es, diese Online-Speicher beim Einloggen in einen Linux-Rechner automatisch zu mounten, hat man eine sehr bequeme Möglichkeit, eigene Dateien zu sichern und an anderen Orten zugänglich zu machen. 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 gelingt die Konfiguration üblicherweise problemlos.

Im Folgenden wird am Beispiel des Zugriffs auf einen Nextcloud-Server gezeigt, wie man den gesamten Speicher ins eigene Dateisystem einbinden kann. Zusätzlich wird ein Teilbereich verschlüsselt. Dieser kann in unverschlüsselter Form ebenfalls ins eigene Dateisystem eingebunden werden. Dabei wird von den Möglichkeiten des Linux-Dienstes »systemd« Gebrauch gemacht.

»Rclone« wird in den verbreiteten Linux-Distributionen in den Standard-Repositorien angeboten. Installierbare Pakete sind aber auch hier zu finden.

Mounten des Online-Speichers

Rclone-Konfiguration

Man startet 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 einen Bereich enthält, der dem folgenden ähnlich sieht:

[RolfsCloud]
type = webdav
url = https://ocloud.ptb.de/remote.php/webdav/
vendor = nextcloud
user = ????????
pass = ????????-????????-????????

Der Eintrag unter pass ist die verschleierte Version des für den Zugriff verwendeten Passworts. Ein erster Test kann mit

rclone lsd RolfsCloud:
rclone ls  RolfsCloud:

erfolgen. Hinweise zu weiteren Rclone-Anweisungen wie »copy« oder »move« findet man in der Dokumentation zu »Rclone«. Die Datei $HOME/.config/rclone/rclone.conf sollte nur für deren Eigentümer lesbar sein. Man kann dies mit

chmod 600 $HOME/.config/rclone/rclone.conf

erzwingen.

Automatisches Mounten des gesamten Online-Speichers

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

rclone mount RolfsDropbox: $HOME/cloud

Über den vorher zu erzeugenden Mount-Punkt $HOME/cloud 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/cloud-mount.service

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

[Service]
Type=simple
ExecStartPre=/bin/mkdir -p %h/cloud
ExecStart=/bin/bash -lc "/usr/bin/rclone mount RolfsCloud: %h/cloud \
  --config %h/.config/rclone/rclone.conf"
ExecStop=/usr/bin/fusermount -zu %h/cloud
Restart=on-abort

[Install]
WantedBy=default.target

Anmelden des Services zum späteren automatischen Start beim Einloggen

systemctl --user enable cloud-mount.service

Start des Services

systemctl --user start cloud-mount.service

Test

systemctl --user status cloud-mount.service
journalctl --user-unit  cloud-mount.service
ls -l ~/cloud/

Von nun an wird das Cloud-Dateisystem bei jedem Einloggen eingebunden und bei jedem Ausloggen ausgehängt.

Bevorzugt man das »händische« Mounten, kann man sich zur Vereinfachung in $HOME/.bashrc eine Hilfsfunktion definieren:

 function mountCLOUD () {
  local mp="$HOME/cloud"
  if $(mountpoint -q $mp); then
    systemctl --user stop cloud-mount.service
    echo "\"$mp\" unmounted"
  else
    systemctl --user start cloud-mount.service
    echo "\"$mp\" mounted"
  fi
}

Ein erster Aufruf von mountCLOUD mountet und ein nachfolgender unmountet das Cloud-Dateisystem.

Automatisches Mounten eines verschlüsselten Teils des Online-Speichers

Es soll erreicht werden, dass sämtliche Daten unterhalb eines Verzeichnisses enigma in verschlüsselter Form abgelegt werden. Dazu wird wiederum

rclone config

aufgerufen und dort »Encrypt/Decrypt a remote« ausgewählt. Der Name möge »RolfsCloud_crypt« lauten. Bei »Remote to encrypt/decrypt« gibt man einen bereits existierenden Cloud-Speicher an (beispielsweise RolfsCloud:enigma bzw. RolfsCloud: bei Verschlüsselung des kompletten Cloud-Speichers). Für die später automatisch ausgefü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.

Das Mounten dieses neu definierten Bereiches geschieht analog zu der vorher beschriebenen Art. Anlegen der Datei $HOME/.config/systemd/user/cloud_crypt-mount.service:

[Unit]
Description=Crypt Cloud mount with rclone
Documentation=https://rclone.org/docs/
Wants=cloud-mount.service

[Service]
Type=simple
ExecStart=/bin/bash -lc "/usr/bin/rclone --vfs-cache-mode writes \
  mount RolfsCloud_crypt: \
  %h/cloud.enigma --config %h/.config/rclone/rclone.conf"
ExecStop=/usr/bin/fusermount -zu %h/cloud.enigma
Restart=on-abort

[Install]
WantedBy=default.target 

Anmelden des Services zum späteren automatischen Start beim Einloggen

systemctl --user enable cloud_crypt-mount.service

Start des Services

systemctl --user start cloud_crypt-mount.service

Test

systemctl --user status cloud_crypt-mount.service
journalctl --user-unit  cloud_crypt-mount.service
ls -l ~/cloud.enigma/ 

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

Sollte aufgrund von Netzwerkproblemen der Zugriff gestört sein, kann man z.B. mit

systemctl --user restart cloud_crypt-mount.service

den funktionsfähigen Zustand wiederherstellen.

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 (2018/05)

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