Daten mit dem Git-annex Assistant synchronisieren

Aus LinuxUser 09/2014

Daten mit dem Git-annex Assistant synchronisieren

© Anatoli Babi, 123RF

Ringtausch

Mit Git-annex synchronisieren Sie Daten aller Art über mehrere Rechner hinweg. Dabei erleichtert ein Webfrontend die ansonsten komplexe Konfiguration der Repositories.

Das Programm Git-annex stammt direkt aus der Mitte des Linux-Ökosystems. Es ermöglicht, Dateien in einem Git-Repository zu verwalten und über mehrere Geräte zu synchronisieren. Ein verschlüsseltes Archiv in der Cloud, ein Backup auf einer externen Festplatte oder auf einem SSH-Server – wer Git-annex beherrscht, erledigt diese Aufgaben mit links.

Die Fülle an Möglichkeiten mag aber manchen vom Einsatz abhalten. Eben dieser Angst begegnet das Frontend Git-annex Assistant, indem es die Komplexität hinter einem zeitgemäßen Webinterface versteckt.

Installation

Für die gängigsten Distributionen wie Debian, Fedora und Ubuntu stehen zwar Pakete bereit, diese hinken der Entwicklung aber in der Regel deutlich hinterher. Debian “Wheezy” und Ubuntu “Precise” halten in den Repositories Version 3.2 vor, die den Assistant noch nicht unterstützen. Ubuntu “Trusty” kommt zumindest mit Version 5.2, aufgrund des hohen Arbeitstempos des Entwicklers bietet sich aber die Installation der bereits kompilierten Binärarchive an [1].

Für diese manuelle Installation genügt es, das Archiv zu entpacken und den Ordner git-annex.linux dem Pfad hinzuzufügen. Listing 1 zeigt die erforderlichen Schritte, das Ändern der Pfadvariablen geschieht allerdings nur temporär. Für eine dauerhafte Installation fügen Sie den Ordner git-annex.linux der Variablen $PATH hinzu. Unter Ubuntu bewerkstelligen Sie das über die Datei ~/.pam_environment oder die ~/.bashrc.

Listing 1

$ wget "http://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz"
$ tar xzf git-annex-standalone-amd64.tar.gz
$ PATH="$PATH:$HOME/git-annex.linux"
$ git-annex version
git-annex version: 5.20140405-g8729abc
build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus
DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256
SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external

Git-annex Assistant

Die Weboberfläche (Abbildung 1) gehört zu Git-annex und entstand als Ergebnis einer Crowdfunding-Kampagne. Sie ergänzt die umfangreichen Befehle für die Kommandozeile mit Fokus auf einfache Eingabemasken zum Erstellen von Repositories sowie dem Konfigurieren von Repositories in der Cloud, inklusive deren Verschlüsselung.

Darüber hinaus bietet das Frontend die Möglichkeit, über Dialoge den Abgleich zwischen den Datenlagern zu konfigurieren und Informationen zum Status der aktuellen Vorgänge abzufragen.

Abbildung 1: Die Weboberfläche Git-annex Assistant vereinfacht einige Aufgaben, für die Sie sonst die Kommandozeile bemühen müssten.

Abbildung 1: Die Weboberfläche Git-annex Assistant vereinfacht einige Aufgaben, für die Sie sonst die Kommandozeile bemühen müssten.

Zum Start der Applikation geben Sie auf der Kommandozeile den Befehl git-annex-webapp ein. Damit öffnet die Software automatisch den Browser und ruft eine URL folgender Form auf:

http://127.0.0.1:59739/?auth=Token

Der Token besteht aus einer langen Kette von Buchstaben und Ziffern. Aus Sicherheitsgründen ändern sich mit jedem Aufruf sowohl Port als auch Token. Der untere Teil von Abbildung 1 listet eine Übersicht aktuell synchronisierter Repositories auf. Das Beispiel enthält lokale Daten im Verzeichnis ~/annex.

Sehen Sie in diesem Ordner nach, finden Sie zunächst nur das versteckte Verzeichnis .git. Legen Sie jedoch eine Datei im Ordner ~/annex ab, erstellt der im Hintergrund laufende Assistant automatisch einen Git-Commit und nimmt die vorhandene Datei unter seine Fittiche.

Da Repositories, die Sie über die Weboberfläche erstellt haben, sich im “Direct Mode” befinden, geschieht dies für Sie transparent [2]. Dennoch erlaubt die Kommandozeile einen Blick in die Interna von Git-annex (Listing 2)

Listing 2

$ cd ~/annex
$ git log
commit eef1018fe44e208d80436699ec8d4addecfb0e1c
Author: Georg Schönberger <gschoenberger@thomas-krenn.com>
Date:
Thu Apr 17 16:11:04 2014 +0200
$ git-annex whereis debian-packaging-tutorial.pdf
whereis debian-packaging-tutorial.pdf (1 copy)
4dc52c03-7d5a-4e3e-86ff-22e2b161af3e -- here (gschoenb@gschoenb-X220:~/annex)
ok

Local Pairing

In einem Netzwerk, in dem Sie Clients per SSH direkt erreichen, bietet sich das “Local Pairing” als Möglichkeit an, um Dateien automatisch zu synchronisieren. So tauschen dann Mitglieder einer Arbeitsgruppe im gemeinsamen Netzwerk Daten untereinander aus, und das ganz ohne zentralen Server. Als Ausgangspunkt genügen die einzelnen Rechner mit den Repositories und laufendem SSH-Server auf jedem System.

Ein Client gewährt den anderen folgendermaßen Zugriff auf die Daten: Die Schaltfläche Add another repository führt über den Menüpunkt Local computer zur Eingabeaufforderung Secret Phrase – einem Passwort für das Pairing. Mit diesem Passwort autorisieren sich die Clients zum gegenseitigen Austausch von Daten. Beim Pairing laufen die Daten als Multicast über den Port 55556/UDP, die spätere Synchronisation findet wiederum über SSH statt [3].

Das Authentifizieren über Public Keys erleichtert das Einrichten enorm, da so ein wiederholtes Eingeben der Passwörter entfällt. Obendrein erhöht es die Sicherheit erheblich. Ergebnis des Pairings sind Git-Remotes, die jeweils zum anderen Client zeigen (Listing 3). Die Konfiguration der Remotes wäre zwar auch manuell möglich, die Weboberfläche vereinfacht die Aufgabe aber erheblich.

Listing 3

$ git remote -v
annexclt.local_annex    ssh://annex-clt@git-annex-annexclt.local-annex.2Dclt_annex/~/annex/ (fetch)
annexclt.local_annex    ssh://annex-clt@git-annex-annexclt.local-annex.2Dclt_annex/~/annex/ (push)

Die Ordner der Clients bleiben ab dem Zeitpunkt des Pairings synchron. Um einen weiteren Rechner hinzuzufügen, wiederholen Sie die oben beschriebenen Schritte. Dann wandern dessen Daten, die sich im Ordner ~/annex befinden, ebenfalls zu den anderen Maschinen. Ein Austausch der Daten erfolgt bei Änderungen im Verzeichnis auf der Stelle, selbst beim Entfernen einer Datei. Gegen Datenverluste aufgrund versehentlichen Löschens schützt diese Methode also nicht.

Bis jetzt fand das Synchronisieren nur im lokalen Netzwerk statt. Ein Mitarbeiter im Außendienst oder auf Reisen hat aber nicht ständig Zugriff auf die Daten der Arbeitsgruppe. Ein zentraler Server, den alle Clients erreichen, schafft hier Abhilfe.

Auf dem Server

Der über das Internet erreichbare Server erweitert also das bestehende Setup. Dazu installieren Sie auf der entsprechenden Maschine ebenfalls Git-annex und legen über den Assistenten im Browser ein neues Repository an. Im Dashboard liefert die Schaltfläche Add another repository eine Übersicht von möglichen Orten. Daraus wählen Sie den Eintrag Remote server mit der Beschreibung Set up a repository on a remote server using ssh. aus. SSH mit Public-Key-Authentifizierung beseitigt bei der Konfiguration wieder die Problematik der Passworteingabe.

Nach dem Ausfüllen der Dialoge – Host- und Benutzername sowie Verzeichnis – erstellt die Software die notwendigen Dateien und beginnt mit dem Synchronisieren. Ein abschließendes Menü (Abbildung 2) weist noch darauf hin, dass der SSH-Server ein Repository der Gruppe Transfer einsetzt.

Abbildung 2: Nach dem Setup legen Sie die Repository-Gruppe fest.

Abbildung 2: Nach dem Setup legen Sie die Repository-Gruppe fest.

Gruppen diesen Typs halten die Daten lange genug vor, um sie auf die Clients zu verteilen. So sammeln sich auf dem Server keine Datenleichen an. Ein Transfer-Repository wäre also selbst auf einem Server mit begrenztem Speicherplatz möglich.

Neben der Gruppe Transfer definiert Git-annex neun weitere Standard-Gruppen [4]. Je nach Einsatzzweck ordnen Sie ein Repository einer dieser Gruppen zu. Hinter den Gruppen verbergen sich vordefinierte Regeln für das Verteilen von Daten. Das Programm entscheidet also aufgrund der Regeln, welche Daten es behält und welche es in andere Repositories verteilt (siehe Tabelle “Gruppen”).

Gruppen

client Behält alle Daten, außer solchen im Verzeichnis archive.
transfer Transferiert Daten zu anderen Repositories, behält die Dateien nur so lange, bis alle Clients eine Kopie haben.
backup Behält alle Daten im Repository.
incremental backup Behält alle Daten, die sich nicht in einem anderen Backup oder anderen Repository gleichen Typs befinden.
small archive Bevorzugt Daten in einem Verzeichnis archive und solche, die nicht anderswo archiviert sind.
full archive Enthält alle Daten, die nicht anderswo archiviert sind.
source Ein Repository, das Daten produziert, aber keine erhält. Entfernt die Daten, sobald sie anderswo synchronisiert sind.
manual Erlaubt die manuelle Definition von Regeln.
public Geeignet zum Veröffentlichen von Daten. Ein konfigurierbares Verzeichnis wird mit einem öffentlichen Repo abgeglichen.
unwanted Zum Löschen und Leeren eines Repositorys. Diese Zuordnung sorgt dafür, dass die Software alle Daten wegtransferiert.

Remote Sharing

Ein Mitarbeiter im Außendienst möchte nun ebenfalls auf das vorhandene Repository am Server zugreifen und Daten mit der Arbeitsgruppe abgleichen. Er konfiguriert dafür ein lokales Repository und denselben Remote Server wie seine Kollegen. Prinzipiell besteht nun die Möglichkeit, dass das Team ab diesem Zeitpunkt Daten über den zentralen Server austauscht, jedoch vorerst noch mit manuellen Handgriffen (Listing 4). Für eine vollautomatische Synchronisation sind noch weitere Schritte nötig.

Listing 4

$ git annex sync
commit ok
pull 192.168.56.105_annex
[...]
From ssh://git-annex-192.168.56.105-annex_annex/~/annex
f354d72..b00521a master
-> 192.168.56.105_annex/master
d5bc296..6d59151 synced/git-annex -> 192.168.56.105_annex/synced/git-annex
f354d72..b00521a synced/master -> 192.168.56.105_annex/synced/master
Updating f354d72..b00521a
Fast-forward
gbp-dc10.pdf
| 1 +
packaging-tutorial.pdf | 1 +
2 files changed, 2 insertions(+)
[...]

Automatisch

Bei dem bereits angesprochenen Zwischenschritt zum automatischen Abgleich handelt es sich um ein Hilfsmittel, um andere Clients über Änderungen zu informieren (Abbildung 3). In der aktuellen Version von Git-annex übernimmt diese Rolle ein XMPP- beziehungsweise ein Jabber-Server, über den Clients mit ihren Buddies das Remote Pairing einrichten. Alternativ eignen sich Messaging-Dienste wie Google Talk.

Abbildung 3: Zur Zeit braucht Git-annex zum automatischen Synchronisieren von Daten noch einen Messaging-Dienst.

Abbildung 3: Zur Zeit braucht Git-annex zum automatischen Synchronisieren von Daten noch einen Messaging-Dienst.

Joey Hess, der Entwickler von Git-annex, arbeitet an einem Daemon, der den Zwischenschritt überflüssig macht [5]. Er überwacht entfernte Datenbestände und startet bei Bedarf automatisch die Synchronisation. Der Daemon hat es bereits in den Hauptzweig der Entwicklung geschafft, bis zu einer stabilen Version ist es daher möglicherweise kein allzu langer Weg.

Möchten Sie alle Komponenten selbst in der Hand haben, installieren Sie einen eigenen Messaging-Server wie Ejabberd. Allerdings arbeiten die entsprechenden Pakete aus Debian “Wheezy” und Ubuntu “Precise” nicht mit dem Git-annex Assistant zusammen: Ein Bug im Mechanismus zum Authentifizieren verhindert die Konfiguration über die Oberfläche [6].

Für Ejabberd gibt es auf dessen Webseite jedoch Installer-Skripte, die das manuelle Einrichten erleichtern. Unter Ubuntu setzen diese das Paket libyaml-0-2 voraus. Danach führen einige wenige Kommandos bis zum eigenen Jabber-Server, der mit Git-annex zusammenarbeitet.

Der Jabber-Server dient als letzte Komponente des Remote Sharings. Die Clients der Arbeitsgruppe – inklusive des Mitarbeiters auf Achse – nehmen sich erst einmal gegenseitig als Chat-Freund auf. In der Weboberfläche tragen sie daraufhin via Menüpunkt Share with a friend den Jabber-Account-Namen ein.

In der folgenden Maske erscheinen die Namen der aktiven Buddies und eine Schaltfläche mit der Aufschrift Start Pairing. Dieser Knopf sendet einen Pair Request, den das Gegenüber bestätigen muss. Im Anschluss an diesen letzten Schritt der Konfiguration synchronisieren die Clients ihre Daten über das Transfer-Repository.

Fazit

Die Weboberfläche Git-annex Assistant ergänzt auf gelungene Weise die darunterliegende Software. Grundlegende Arbeiten gelingen mit wenigen Mausklicks. Local Pairing bietet für Systeme mit gegenseitigem SSH-Zugriff einen einfachen Weg zum Synchronisieren von Daten. Das Remote Sharing mit dem Umweg über einen Messaging-Dienst ist zwar im Moment etwas umständlicher, der sich gerade in Arbeit befindende Daemon schafft hier aber demnächst Abhilfe.

Um das volle Potenzial von Git-annex auszuschöpfen, müssen Sie allerdings auf die Kommandozeile zurückgreifen. Auf der Webseite des Projekts stehen einige Screencasts bereit, die detailliert den Einsatz der Software beschreiben.

Nicht ohne Grund weist Joey Hess explizit [7] darauf hin, was Git-annex nicht ist: Es synchronisiert zwar Daten, bietet aber kein implizites Backup. Zwar lässt sich das Programm in eine Datensicherungsstrategie integrieren, für das eigentliche Backup gibt es aber einfachere Tools. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2014 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben