Mehr Speicherplatz für Deja-Dup

Einige von euch kennen sicher Déjà Dup, ein benutzerfreundliches Backup-Tool für Linux. Ich habe es bei mir seit einer ganzen Weile im Einsatz und habe bereits ein Backup in Anspruch nehmen müssen, das ich damit erstellt hatte (damals hatte shotwell seine photo.db aktualisiert, aber die neue Version war so buggy, dass ich ein rollback machen musste – photo.db konnte ich problemlos wiederherstellen).

Aber es gibt da ein Problem

Déjà Dup ist lediglich ein Frontend für duplicity, dessen Bedienung teilweise lange Kommandozeilen erfordert. Bei jeder Backup, Wiederherstellungs und Überprüfungsaktion benötigt duplicity einige temporäre Dateien, die je nach größe des Backups sehr groß sein können. Zum Überprüfen des durchgeführten Backups wird das Backup wieder ausgepackt und mit den Originaldateien verglichen. Ich glaube, dass es immer in kleinen Portionen gemacht wird, aber auch diese benötigen mehr als 2GB Speicherplatz, wie ich vor einer Weile herausgefunden habe.

Mein Problem ist, dass ich als „/tmp/“-Verzeichnis eine RamDisk habe, die also im Arbeitsspeicher liegt und nur 2GB Kapazität hat. Wenn duplicity also versucht, für die Überprüfung Daten zu entpacken, dann schlägt das fehl, da der Speicherplatz irgendwann voll ist.

Bisherige Lösung

Das Problem habe ich schon eine ganze Weile und hatte es nach einer längeren Websuche in diversen Support-Threads damit gelöst, dass ich Deja-Dup manuell so gestartet habe:

TEMPDIR=“/alt_tempdir/“ deja-dup-preferences

Diese Environment-Variable wurde ausgewertet und wenn ich im Preferences-Fenster dann auf „Jetzt sichern“ geklickt habe, wurde das Verzeichnis benutzt.

Heute funktionierte dann die Methode nicht mehr und es wurde wieder „/tmp/“ benutzt. Oha… dann scheint sich was seit dem letzten Update geändert zu haben. Blöd.

Systematischer Ansatz

Wie finde ich nun also heraus, was Déjà Dup anders macht? Erstmal den Quellcode herunterladen, entpacken und sich damit anfreunden, dass das in Vala geschrieben ist.

Die man-page von duplicity beschreibt, dass „–tempdir directory“ verwenden soll, um das Verzeichnis für die temporären Dateien festzulegen. Da Déjà Dup das aufrufen muss, habe ich den Quellcode via „grep -r -i „tempdir“ .“ danach durchsucht und wurde fündig, wo das aufgerufen wird. Einige Zeit und Quellcode-Leserei später fand ich dann die Funktion „public string[] get_tempdirs()“ in CommonUtils.vala.

var tempdir = Environment.get_variable(„DEJA_DUP_TEMPDIR“);

Aha! So heißt die Variable also jetzt. Ha! Der oben beschriebene Workflow funktioniert tatsächlich, wenn man DEJA_DUP_TEMPDIR statt TEMPDIR verwendet.

Integration ins System

Da ich schonmal dabei bin, etwas zu ändern, kann ichs mir auch gleich bequem machen. Ich möchte schließlich, dass auch die beim Anstecken der Backup-Platte gestarteten Backup-Aktionen dieses Verzeichnis benutzen.

Ich verwende Gentoo, da habe ich in deren Dokumentation gefunden, wie man globale Environment-Variablen setzt. Man kann die sicher auch pro Benutzer setzen, bin mir aber nicht sicher, in welchem Kontext Déjà Dup gestartet wird, also gehe ich so lieber auf Nummer sicher (da ich sowieso der einzige Benutzer am Rechner bin).

Also kommt ins Verzeichnis „/etc/env.d“ eine Datei „99dejadup“ mit dem Inhalt „DEJA_DUP_TEMPDIR=/alt_tempdir/“. Und fertig.

Ich hoffe euch hilft das, falls ihr das gleiche Problem habt. Ansonsten hab ich hier einfach mal beschrieben, wie man da herangeht, solch eine Lösung selber zu finden, wenn man ein wenig drauf klar kommt, Quellcode zu lesen um herauszufinden, was die da eigentlich tun.

Schreibe einen Kommentar

Deine Email wird nicht veröffentlicht, Name und Email müssen angegeben werden.