gibak unter Ubuntu zum Laufen bringen

gibak ermöglicht es einem, z.B. das gesamte Homeverzeichnis auf einem externen Medium oder nur in einem anderen Verzeichnis zu sichern und gleichzeitig, verschiedene Versionen einer Datei vorzuhalten.
So ist es nicht nur möglich, den Stand des letzten Backups zurückzuspielen, sondern auch den Stand davor oder davor :)

Ein Zitat von der offiziellen Website:
Recent events have pushed me to get serious about backing up my data. I'm naturally inclined to use simple solutions over specialized backup systems, preferring something like rsync to a special-purpose tool. As far as "standard" tools go, however, git provides a very nice infrastructure that can be used to build your own system, to wit:
  • it is more space-efficient than most incremental backup schemes, since it does file compression and both textual *and* binary deltas (in particular, it's better than solutions relying on hardlinks or incremental backups à la tar/cpio)
  • its transport mechanism is more efficient than rsync's
  • it is fast: recoving your data is *faster* than cp -a
  • you keep the full revision history
  • powerful toolset with a rich vocabulary
Im Folgenden wird davon ausgegangen, dass die Konsole verwendet wird und keine grafischen Oberflächen.
Stand: 08. April 2010

1. Fork anstatt Original verwenden
Es gibt einen Fork des Projektes, der einige Fehler beseitigen soll. Er wird von Chris Johnsen verwaltet. Geht nun auf diese Website und klickt auf "Download Source". Das Paket enthält alle Quelltexte, Bibliotheken etc., im Prinzip den ganzen Fork.
Entpackt die Datei in ein Verzeichnis eurer Wahl.
2. Abhängigkeiten auflösen
Folgende Pakete müssen vorher installiert werden:
Code:
sudo apt-get install ocaml omake ocaml-findlib libfileutils-ocaml-dev git-core
3. Quelltexte ändern
Wechselt in das in Schritt 1 entpackte Paket/Verzeichnis und öffnet mit einem Editor die Datei ometastore.ml und ändert folgende Zeile:
Code:
Zeile 8: open FileUtil
Eine Zeile drüber müsste open Util stehen, nicht verwirren lassen :)

Dann öffnet die Datei OMakefile und ändert paar Zeilen ab:
Code:
Zeile 5:  INCLUDES += /usr/local/lib/ocaml/3.11.1/fileutils
Zeile 14: OCAMLFLAGS += -warn-error x
Quelle siehe hier. Eventuell müsst ihr den fileutils-Pfad anpassen, da hilft dann nur suchen :)
4. Kompilieren und installieren
Nun kompiliert die Dateien mit dem Befehl omake. Kopiert die entstandenen Dateien z.B. nach /usr/local/bin:
Code:
cp find-git-files /usr/local/bin
cp find-git-repos /usr/local/bin
cp gibak /usr/local/bin
cp ometastore /usr/local/bin
5. Schritte nach der Installation
Wechselt in euer Home-Verzeichnis oder dasjenige, welches ihr sichern wollt. Führt gibak init aus. Es entsteht der versteckte Ordner .git/, welchen ihr sinnvollerweise jetzt z.B. auf eine externe Festplatte oder eine andere Partition verschiebt. In diesem Ordner werden alle Dateien und Versionen gespeichert, er wird also relativ groß werden.
Der Ordner kann jetzt beliebig benannt werden, ich habe backup-git verwendet.
Erstellt nun eine symbolische Verknüpfung in eurem Home-Verzeichnis:
Code:
ln -s /wo-der-ordner-liegt/backup-git /home/nutzername/.git
Vielleicht wollt ihr nicht das gesamte Home-Verzeichnis sichern. Schaut euch dazu die Datei .gitignore an und auch diese Website hier.

Wenn ihr fertig seid und viel Zeit mitbringt, führt gibak commit aus.
7. Daten wiederherstellen
[Wird ergänzt; git checkout dir/foo.txt]
8. Troubleshooting
Code:
fatal: Out of memory? mmap failed: No such device
Could not complete addition of files to history store!
Falls so eine Meldung kommt kann es helfen, über die .gitignore-Datei den (ersten) Backupvorgang in zwei Brocken aufzuteilen, d.h. ein paar Verzeichnisse auszuschließen um sie beim zweiten Durchlauf wieder zu bearbeiten.

9. Abschließendes
Gestern habe ich es endlich geschafft, gibak zum Laufen zu bringen. Damit ich die einzelnen Schritte allerdings nicht vergesse und da ich keinen Blog habe, wirds hierhin abgeladen.
Falls ihr Fehler finden solltet, einfach melden. Ich werde den Post entsprechend editieren :)
 
Zurück
Oben