Termine planen, Nachrichten austauschen, Kundendaten verwalten, am besten auch vom Smartphone aus. Das alles und noch viel mehr sollen moderne ... (mehr)

Erste Schritte

Ein Repository mit Git-Annex zu erstellen ist einfach:

$ git init
Initialized empty Git repository in /home/alice/example/.git/
$ git-annex init "Alice"
init Alice ok
(Recording state in git...)

Der Befehl »git-annex add« versioniert eine neue Datei, dadurch verwandelt sie sich in einen symbolischen Link (siehe Listing 3 ).

Listing 3

Neue Datei im Repository

 

Wie beschrieben befinden sich die Datei-Inhalte selbst nicht im Git-Annex-Repository. Ansonsten unterscheidet sich dieses nicht von anderen Git-Repositories. Es kann ebenfalls auf anderen Systemen geklont werden, ebenso kommen bei Bedarf Remote-Repositories hinzu.

Das lokale Repository ist somit nur ein Anfang bei einer Vielzahl möglicher komplexer Konfigurationen. Abbildung 1 skizziert ein Setup für die Synchronisation zweier Repositories über eine SSH-Verbindung. Diese direkte Verbindung eröffnet für die beiden Beispielbenutzer Alice und Bob die folgenden Möglichkeiten:

Abbildung 1: Die Synchronisation zweier Git-Annex-Repositories via SSH.

Alice fügt in ihrem Repository Dateien mit Git-Annex hinzu. Mit »git-annex sync« synchronisiert sie es mit Bob. Dieser erhält dabei im ersten Schritt statt der Datei nur einen unvollständigen symbolischen Link. Möchte er auch die dazugehörigen Datei-Inhalte haben, holt er sie mit »git-annex get« aus Alices Repository.

Alice kopiert mit »git-annex copy« Dateien inklusive Daten zu Bob. Ruft dieser nun »git-annex sync« auf, findet er gleich die vollständige Datei vor.

Git-Annex stellt beim Austausch der Daten sicher, dass jede Datei immer mindestens einmal vorhanden ist. Solange eine der Parteien die Inhalte einer Datei besitzt, kann die andere Seite sie "droppen", also die Daten "fallen lassen" und nur den Dateinamen beziehungsweise den symbolischen Link behalten. Die Konfiguration der minimalen Gesamtzahl notwendiger Kopien lässt sich auch erhöhen; im Beispiel würde Git-Annex dann sicherstellen, dass die Datei sich sowohl in Alices als auch in Bobs Repository befindet.

Der Assistent

Git-Annex lässt sich zwar vollständig über die Kommandozeile konfigurieren, doch für die einfachere Benutzung bietet es auch eine Weboberfläche an. Sie ermöglicht die Konfiguration mehrerer Repositories inklusive automatischer Synchronisation in wenigen Schritten. Abbildung 2 zeigt das Konfigurationsmenü eines Repository auf einer externen USB-Festplatte. Es fungiert im nachfolgenden Beispiel als Datenarchiv – Dateien im Ordner »archive« werden automatisch auf die externe Platte synchronisiert. Dazu wird das Repository der USB-Platte der Gruppe »small archive« zugeordnet.

Neben »small archive« definiert Git-Annex neun weitere Gruppen. Sie legen fest, welche Daten bevorzugt im Repository bleiben und welche in die anderen Repositories umziehen. Diese Entscheidungen trifft Git-Annex aufgrund von Regeln, die den Gruppen zugeordnet sind. Im Falle von »small archive« werden alle Datei-Inhalte des Ordners »archive« lokal "gedroppt" und ins USB-Archiv überspielt. Der Assistant läuft als Hintergrunddienst und übernimmt die automatische Synchronisation. Das folgende Beispiel verschiebt die Datei »debian-packaging-turorial.pdf« ins Archiv; ein symbolischer Link bleibt im lokalen System bestehen, die Datei-Inhalte befinden sich auf der externen USB-Festplatte:

$ git-annex whereis .
whereis debian-packaging-tutorial.pdf (1 copy) 11ac0193-a14b-41f8-942f-fecf30ee7ed4   -- here (Alice)
ok
$ mv debian-packaging-tutorial.pdf  archive/$ git-annex whereis .
whereis archive/debian-packaging-tutorial.pdf (1 copy)
be012dc6-5548-4135-89c7-5fb31b9d4f9f   -- lexar (USB Archiv)
ok

Der Git-Annex-Assistant kopiert auch den Datei-Inhalt, wenn der Benutzer eine Datei wieder aus dem Archiv herausnimmt. Dadurch entsteht eine transparente Synchronisation zwischen lokalem Repository und dem Archiv auf der Festplatte.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023