12. September 2013

Arch Linux: Automatische Google Drive-Synchronisation mit Grive

Obwohl schon lange von Google gefordert wird, einen Google Drive-Client für Linux bereit zu stellen, ist dies bisher noch nicht geschehen. Mit "Grive" existiert jedoch ein inoffizieller Client, der es erlaubt, die Dateien aus der Google Drive-Cloud mit einem lokalen Ordner unter Linux zu synchronisieren. Die Projektseite von Grive findet man unter diesem Link.

Grive installieren


Grive ist unter Arch Linux im AUR verfügbar und kann so z.B. über den folgenden Befehl über das Kommandozeilen-Tool "Yaourt" installiert werden:
 $ yaourt -S grive  
Anschließend muss ein Ordner erstellt werden, in dem die auf Google Drive befindlichen Dateien synchronisiert werden sollen. Um den Ordner "Google Drive" im Home-Verzeichnis zu erstellen kann etwa der folgende Konsolenbefehl genutzt werden:
 $ mkdir ~/Google\ Drive
Anschließend wechselt man über den folgenden Befehl in den neu angelegten Ordner:
 $ cd ~/Google\ Drive
Beim ersten Start von Grive muss das Programm mit dem Parameter -a ausgeführt werden, um den Zugriff auf Google Drive zu autorisieren (Wichtig ist dabei ist, dass das Programm aus dem Ordner heraus ausgeführt wird, der zur Synchronisation genutzt werden soll):
 $ grive -a
Durch den Befehl wird ein Link ausgegeben, der in einem Browser eingegeben wird. Dadurch wird eine Seite angezeigt über die man den Zugriff von Grive auf Google Drive autorisieren kann. Dadurch wird ein Code angezeigt, der wiederum in das Terminal eingefügt werden muss, über das zuvor der Befehl ausgeführt wurde. Nach dem Bestätigen der Eingabe über Enter wird der lokale Ordner mit Google Drive synchronisiert.

Autorisierung von Grive über einen Browser (Klicken zum Vergrößern)

Cronjob für automatische Synchronisation einrichten


Um den lokalen Ordner zu synchronisieren muss normalerweise aus einem Terminal heraus der Befehl "grive" in diesem Ordner ausgeführt werden. Um eine automatische Synchronisation zu erreichen kann alternativ ein Cronjob eingerichtet werden, der regelmäßig diesen Befehl ausführt und somit eine Synchronisation nach einem bestimmten Intervall anstößt.

Hierfür muss zunächst ein Bash-Skript erstellt werden, das die Grive-Synchronisation für den gewünschten Ordner ausführt. Um eine solches Skript mit dem Namen "grive-cron.sh" in dem Verzeichnis /bin über den Editor "nano" zu erstellen kann z.B. der folgende Befehl genutzt werden. Der Befehl muss dabei mit Root-Rechten ausgeführt werden, da nur der Root-Benutzer für dieses Verzeichnis Schreibrechte besitzt.
 $ sudo nano /bin/grive-cron.sh  
Als Inhalt der zu erstellenden Datei muss das folgende Shell-Skript eingegeben werden, das dafür sorgt, dass in den Ordner gewechselt wird, der synchronisiert werden soll und anschließend Grive ausgeführt wird. Ders absolute Pfad zu dem zu synchronisierenden Ordner muss natürlich je nach Anwendungsfall angepasst werden.
 #!/bin/bash  
 cd /home/user/Google\ Drive  
 grive  
Anschließend gilt es, einen neuen Cronjob zu erstellen, der in einem bestimmten Intervall dieses Skript ausführt. Um die Konfiguration der Cronjobs des aktuellen Benutzers beispielsweise mit dem Editor "nano" zu editieren kann der folgende Befehl genutzt werden.
 $ env EDITOR=nano crontab -e  
Die Datei die dadurch geöffnet wird, kann verschiedene Cronjobs enthalten, von denen jeder in einer neuen Zeile eingetragen wird. Jeder dieser Cronjobs bestehen aus sechs Spalten von denen die ersten fünf die Zeiten definieren zu denen der Job ausgeführt werden soll und die letzte Spalte den Befehl aufnimmt, der ausgeführt werden soll. Indem die folgende Zeile in die Datei eingefügt wird, wird ein neuer Cronjob definiert, der das zuvor erstellte Skript minütlich ausführt. Weitere Informationen über die Konfiguration der Ausführungszeit von Cronjobs finden sich unter diesem Wiki-Artikel.
 * * * * * /bin/grive-cron.sh
Nach dem Speichern der geänderten Datei über den Shortcut Strg+O und dem Schließen des Editors über Strg+X wird der neue Cronjob automatisch erstellt und gestartet. Über den folgenden Befehl kann man sich eine Liste der aktuell definierten Cronjobs anzeigen lassen:
 $ crontab -l
Über den erstellten Cronjob sollte die Synchronisierung des lokalen Ordners mit Google Drive minütlich oder je nach definiertem Intervall ausgeführt werden und dessen Inhalt somit stets abgeglichen sein.

Weiterführende Links:

Keine Kommentare:

Kommentar veröffentlichen