Aus Linux-Magazin 11/2013

Dateien verteilen und verwalten mit Git-Annex

luciano de polo, 123RF

Die Storagesoftware Git-Annex verteilt Dateien über Geräte, Server und Clouddienste. Dabei kann sie verschlüsseln, hält alles synchron und weiß stets, welche Daten wo liegen.

Wer in eine abgeschiedene Blockhütte zieht, darf keinen Breitband-Internetanschluss erwarten. Als der amerikanische Debian-Entwickler Joey Hess 2010 in eine solche Behausung zog, musste er sich also etwas einfallen lassen, um seine Arbeit mit der Wohnform zu versöhnen. Den teuren Dialup-Anschluss warf er aus Kostengründen nur einmal die Woche an – aber er hatte doch eine Menge Server mit einem Stapel an Festplatten zu synchronisieren.

Erfolgreiches Crowdfunding

Joey begann für seine Zwecke ein Synchronisationstool zu schreiben, das als Unterbau die freie Versionskontrollsoftware Git verwendet. Was als Mittel für den Hausgebrauch begann, ist nun als Git-Annex [1] unter GPL allgemein verfügbar. Mit einer Crowdfunding-Kampagne konnte der Entwickler das GUI Git-Annex-Assistant programmieren, das die Software für Endanwender bedienbar macht.

Joey Hess beschreibt die beiden Zielgruppen der Software auf der Git-Annex-Homepage: Bob, den Archivar, und Alice, die Weltenbummlerin. Der Archivar kann mit dem Tool seine unzähligen Dateien in einem einzigen Verzeichnisbaum verwalten, obwohl sie auf mehrere Server und sogar ausgesteckte Wechselfestplatten verteilt sind. Für alle Fälle kann Git-Annex zur Sicherheit auch mehrere Kopien von jeder Datei anlegen.

Alice dagegen ist stets mit Netbook und USB-Festplatte unterwegs, hat einen Webserver sowie gemieteten Cloudspeicher. Git-Annex hilft ihr dabei, unterwegs an die richtigen Dateien zu kommen. Dazu reicht eine WLAN-Verbindung im Café, die Dateien beim Cloudanbieter legt sie automatisch verschlüsselt ab.

Git plus Dateispeicher

In beiden Szenarien profitieren die Anwender davon, dass Git Repositories dezentral ablegen und abgleichen kann. Das Versionskontrollsystem ist allerdings zum Speichern vieler kleiner Quelltextdateien gedacht, bei großen Videofiles beispielsweise gibt es Performance- und Platzprobleme. Joeys Kniff: Git-Annex checkt nur die Metadaten zusammen mit einem symbolischen Link in Git ein, die Dateien bringt ein selbst geschriebenes Speicher-Backend im Verzeichnis ».git/annex/« unter.

Installation

Da Git-Annex von einem Debian-Mitarbeiter stammt, gibt es stets ein aktuelles Paket im Unstable-Zweig (Sid). Für die stabile Debian-Version oder andere Distributionen besteht die einfachste Installationsmethode darin, die vorkompilierten Binärarchive zu verwenden. Der Entwickler bietet sie stets aktualisiert unter [2] zum Download an. Nach dem Entpacken muss man noch das entstandene Verzeichnis, etwa »~/bin/git-annex.linux/« , seinem »PATH« hinzufügen.

Das Installieren der in Haskell geschriebenen Software mit dem Paket-Tool Cabal bleibt geübten Programmierern dieser Sprache vorbehalten: Beim Test der Redaktion gab es nicht erfüllte Abhängigkeiten.

Git-Annex liefert Kommandozeilentools mit, die für technische Anwender rasch zu erlernen sind, vor allem wenn sie Git kennen. Die folgenden Befehle machen das Verzeichnis »~/annex« zu einem Git-Annex-Repository namens »Mein PC« :

cd ~/annex
git init
git annex init "Mein PC"

Bevor der Anwender nun Dateien im Verzeichnis ablegen kann, versetzt er es mit »git annex direct« in den so genannten direkten Modus. Nur in diesem darf er auf die Dateien zugreifen [3]. Standardmäßig befinden sich Repositories im Modus »indirect« . Dann liegen alle Daten unterhalb des versteckten ».git/« .

Wer seinem Dateispeicher ein weiteres Repository hinzufügen will, etwa einen USB-Stick, führt die Kommandos in Listing 1 aus. Sie legen auf dem Stick das Repository an und verknüpfen die beiden Repositories: Jedes sieht das jeweils andere als Remote Repository, mit dem es sich abgleicht.

Listing 1

Remote hinzufügen

01 cd /media/stick
02 git clone ~/annex
03 cd annex
04 git annex init "USB-Stick"
05 git remote add pc ~/annex
06 cd ~/annex
07 git remote add usb-stick /media/stick/annex

Wie man nun Dateien hinzufügt und sie unter die Verwaltung von Git-Annex stellt, zeigt Listing 2. Der Befehl »git annex sync« veranlasst schließlich das Synchronisieren der Daten.

Listing 2

Dateien hinzufügen

01 cd ~/annex
02 cp /tmp/Datei1 .
03 cp /tmp/Datei2 .
04 git annex add .
05 git commit -a -m 'neue Dateien'

Viel Zubehör

Zu dieser grundlegenden Bedienung, die auf der Git-Annex-Homepage Schritt für Schritt beschrieben ist [4], gibt es zahlreiche Varianten und einiges Zubehör: Als Repositories unterstützt das Tool neben lokalen Verzeichnissen und Wechselmedien auch entfernte Server, sofern sie SSH-Zugriff bieten, Owncloud, die Onlinedienste Google Drive, Amazon S3, Box.com und Rsync.net. Für richtige Archivare stehen auch der Offlinespeicher Amazon Glacier und das öffentliche Archive.org zur Verfügung.

Das Verschlüsseln erfolgt mit Gnu PG und verläuft standardmäßig mit einem automatisch lokal generierten Key. Auf Wunsch kann der Benutzer sie aber auch nach Gnu-PG-Sitte mit einem bestimmten öffentlichen Schlüssel vornehmen.

Um die zunächst sehr technisch anmutende Software für jedermann zugänglich zu machen, schrieb Joey Hess den Git-Annex-Assistant. Dieser verwendet einen lokalen Webserver, um dem Anwender eine zeitgemäße Weboberfläche im Browser zu bieten. Dabei braucht er auf keine Annehmlichkeit zu verzichten: Über die Inotify-Schnittstelle des Linux-Kernels merkt der Assistant zum Beispiel, wenn sich Dateien geändert haben, und stößt die Synchronisation an (Abbildung 1). Schon beim Anlegen des ersten Repository unterstützt das GUI den User und versetzt es automatisch in den »direct« -Modus. Auch das Einrichten von Remote Repositories (Abbildung 2) macht ein Webformular leicht.

Abbildung 1: Der Assistant merkt automatisch, wenn es lokal neue Dateien gibt, und startet die Synchronisation mit den anderen Speicherorten.

Abbildung 1: Der Assistant merkt automatisch, wenn es lokal neue Dateien gibt, und startet die Synchronisation mit den anderen Speicherorten.

Abbildung 2: Ein Server mit SSH-Daemon lässt sich rasch in ein entferntes Repository mit Verschlüsselung verwandeln.

Abbildung 2: Ein Server mit SSH-Daemon lässt sich rasch in ein entferntes Repository mit Verschlüsselung verwandeln.

Die umfangreiche Dokumentation auf der Projekt-Homepage erklärt zahlreiche Konfigurationsoptionen und gibt Empfehlungen für einzelne Einsatzszenarien. Beispielsweise kann man den einzelnen Repositories bestimmte Rollen zuweisen [5]: Ein »client« enthält die Dateien, auf die der Benutzer bei seiner Arbeit zugreift, »transfer« eignet sich für Server oder Wechselmedien, die ausschließlich zum Datenaustausch dienen, »backup« dagegen bewahrt alles auf.

Trotzdem besteht Joey Hess darauf, dass Git-Annex keine Backup-Software im eigentlichen Sinne sei – sie besitze die Backup-Features eher nebenbei. Mit geeigneten Optionen kann man sogar dafür sorgen, dass Git-Annex ausschließlich MP3-Dateien unter 100 MByte auf den Player schaufelt. In einem Screencast [6] zeigt der Programmautor einige der Einstellungen im Assistant.

Ausblick

Joey hat mittlerweile eine zweite Crowdfunding-Kampagne [7] gestartet, die ihm bereits vor dem Ende der Aktion die Finanzierung für ein weiteres Jahr Entwicklungsarbeit beschert hat. Ab September 2013 möchte er unter anderem den begonnenen Windows-Port verbessern, Verschlüsselung für entfernte Git-Repositories umsetzen und zumindest für bestimmte Situationen Disaster Recovery im Assistant implementieren [8]. Daneben dürfen auch die Sponsoren der Kampagne ihre Wünsche äußern.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben