Wer seine Daten auf dem Google-Drive Cloud-Speicher lagert, möchte eventuell unkompliziert und transparent auf seine Daten zugreifen ohne vorher eine komplette Synchronisation durchzuführen. Gerade auf dem Banana Pi oder Raspberry Pi kann da schnell der Speicherplatz zur Neige gehen.
In diesem Blog-Eintrag werde ich beschreiben, wie man ein Google-Drive-Speicher im Banana Pi als Laufwerk mit Hilfe des Programms „google-drive-ocamlfuse“ einbindet. Für „Nicht-ARM“-Architekturen gibt es bereits fertige Debian-Pakete, die man einfach über den Paketmanager installieren kann. Für ARM-Prozessoren, wie den Banana Pi, müssen die entsprechenden Pakete zunächst manuell kompiliert und installiert werden.
Kompilieren und Installieren:
Glücklicherweise existiert ein fertiges Bash-Script, das die einzelnen Schritte zusammenfasst und automatisch hintereinander ausführt. Ich empfehle, das Script als „root“ auszuführen und danach die fertigen Pakete in das entsprechende User-Home-Verzeichnis zu kopieren. So erspart man sich, dass das Script aufgrund eventueller Berechtigungsprobleme, abbricht.
Weiterhin werden ungefähr 400 MB Speicherplatz benötigt. Entweder man hat noch genug Platz auf seiner SD-Karte oder man passt im Script den Pfad der Variablen „OPAMDIR“ so an, dass sie auf ein externes Speichermedium zeigt.
Dabei sollte man beachten, dass man die „${HOME}“-Einträge im Script auf den Eltern-Pfad von „OPAMDIR“ setzt. Lautet der Pfad von „OPAMDIR“ beispielsweise „/media/usb/opam“ so sollten alle „${HOME}“-Einträge durch „/media/usb“ ersetzt werden.
Hier das Script:
#!/bin/bash
OPAMDIR=${HOME}/opam
DRIVECFG=~/.gdfuse/default/config
sudo apt-get -y –force-yes install ocaml ocaml-findlib sqlite3 camlidl m4 libcurl4-gnutls-dev libfuse-dev libsqlite3-dev camlp4-extra fuse b$
cd $HOME
git clone https://github.com/OCamlPro/opam
cd $OPAMDIR
./configure && make && sudo make install
cd $HOME
opam init –yes && opam –switch=4.01.0dev+trunk –yes
echo „eval \`opam config env\`“ >> ~/.bashrc
opam install google-drive-ocamlfuse –yes
sudo usermod -a -G fuse $USER
newgrp fuse
sudo chmod a+rw /dev/fuse
sudo mkdir -p /mnt/drive
sudo chown $USER.fuse /mnt/drive
sudo sed -i ’s/\#user_allow/user_allow/g‘ /etc/fuse.conf #allows other users to allow_other \ users
Die obigen Zeilen kopiert man einfach in eine Datei (z.b. „installgoogleocaml“) und macht es mit dem Befehl „chmod +x installgoogleocaml“ ausführbar. Gestartet wird das Script dann mit „./installgoogleocaml„.
Das Script läd eine Reihe von Dateien herunter und kompiliert diese anschließend. Das Ganze kann eine ganze Weile dauern!
Nachdem das Script fertig ist, sollte sich – je nach Pfad – die Datei „google-drive-ocamlfuse“ im Verzeichnis „$OPAMDIR/opam/system/bin“ befinden. Falls man möchte kann man nun den kompletten Ordner „opam“ zu einem anderen Ort, zum Beispiel ins Heimatverzeichnis, verschieben.
Konfigurieren und Einbinden
Als nächstes müssen wir „google-drive-ocamlfuse“ konfigurieren. Dazu starten wir das Programm mit folgendem Befehl:
$ opam/system/bin/google-drive-ocamlfuse /mnt/drive
Falls man in einer grafischen Umgebung arbeitet, startet sich nun ein Browser-Fenster worin man den Zugriff von „google-drive-ocamlfuse“ auf sein Google-Drive-Konto erlauben kann. Natürlich sollte dieser Zugriff gestattet werden.
Dadurch werden über das OAuth2-Verfahren die Zugriffsrechte vergeben und das Google-Drive-Konto ist unter dem angegebenen Mount-Verzeichnis „/mnt/drive“ eingebunden.
In der Konfigurations-Datei „~/.gdfuse/default/config“ werden die ID und der „Secret-Cookie“ hinterlegt, sodass man beim erneuten Einbinden nicht nochmal den Zugriff gestatten muss.
Falls man keine grafische Umgebung auf dem Banana Pi zur Bestätigung des Zugriffs zur Verfügung hat, ist das Ganze etwas aufwendiger.
Zunächst ist es notwendig in seinem Google-Konto OAuth2-Zugangsdaten zu erstellen. Man sollte für folgende Schritte die „alte“ Developer-Konsole von Google benutzen. Dafür klickt man beim Aufruf der URL im ersten Punkt einfach auf „Abbrechen“. Die Schritte können auf einen beliebigen Client mit grafischer Oberfläche ausgeführt werden:
- https://code.google.com/apis/console/ aufrufen und ein neues API-Project erstellen.
- Links auf „Services“ klicken
- Den Punkt „Drive API“ auf „On“ stellen
- Links auf „API Access“ klicken
- „Create another Client-ID …“ im Hauptbereich anklicken
- „Installed Application“ auswählen und den Typ „Other“ anklicken
Nun werden die Zeilen „Client ID“ und „Client secret“ angezeigt. Das sind die Zeilen, die wir für den Aufruf von „google-drive-ocamlfuse“ benötigen:
$ opam/system/bin/google-drive-ocamlfuse -headless -id CLIENTID -secret CLIENTSECRET
Als Ausgabe bekommt man nun eine URL, die man in einen Browser einfügen und aufrufen muss. Dies kann auf einem x-beliebigen Client geschehen. Einzige Voraussetzung ist, dass man in sein Google-Account eingeloggt ist.
Das Browserfenster sollte nun eine ID anzeigen, die man wiederum in das Eingabefeld des wartenden Programms „google-drive-ocamlfuse“ (Please enter the verification code:) kopieren sollte.
Nach diesen Schritten kann man nun das Google-Drive-Konto mit dem folgenden Befehl einbinden:
$ opam/system/bin/google-drive-ocamlfuse /mnt/drive
Das war alles :-).