Shaback 0.6.0

Apr 5th, 2010

Die neuste Version meines Backuptools shaback steht nun zum Download bereit:

Shaback 0.6.0 shaback-0.6.0.py Version: 0.6.0
28.9 KiB 81 Downloads Details...

Die neue Version bringt nun die versprochene AES-Verschlüsselung mit. Neben Python 2.5 oder 2.6 ist dafür die PyCrypto-Bibliothek erforderlich.

Das Binärformat der Backupfiles hat sich in dieser Version geändert, so dass alte Backups mit dieser Version nicht wiederhergestellt werden können. Es muss unbedingt ein neues Backuprepository erzeugt werden!

AES-Verschlüsselung für shaback

Mar 24th, 2010

Ich arbeite seit ein Paar Wochen daran, das Backuptool shaback um eine AES-Verschlüsselung zu erweitern.

Dabei soll jede einzelne Datei inklusive dem Indexfile beim Schreiben in den Backuppool verschlüsselt werden. Auf diese Weise kann man dann (hoffentlich) gefahrlos auch ein Onlinebackup bei einem entsprechenden Provider in Erwägung ziehen. Entsprechende Angebote für Online-Festplatten gibt es mittlerweile von verschiedenen Anbietern. In meinem Fall funktioniert es mit Stratos hidrive-Produkt sehr gut, weil man dort u.a. per rsync seine Daten anliefern darf.

Mein Setup sieht dann so aus, dass ich lokal eine zweite Festplatte in meinem Server habe, die per Standby-Schaltung nach einer Weile abgeschaltet wird, um Strom zu sparen. Auf diese Festplatte wird jede Nacht mit shaback ein Backup meiner wichtigsten Dokumente, Fotos etc. gemacht. Anschließend wird das gesamte Backupverzeichnis per rsync auf die Online-Festplatte kopiert.

Somit habe ich immer auch noch ein Offsite-Backup, falls bei mir zu Hause etwas wirklich furchtbares passieren sollte. Ich darf dann nur das Passwort, aus dem der AES-Schlüssel gebildet wird, nicht vergessen!

Sobald die neue Version fertig ist, werde ich sie umgehend hier veröffentlichen. Zur Zeit kämpfe ich noch mit der schlechten Performance der Verschlüsselung. Es ist aber leider schon klar geworden, dass das Format der Backupfiles nicht mehr kompatibel zur ersten Version sein wird. Bereits vorhandene Backups können also mit der neuen Version nicht mehr wiederhergestellt werden.

Shaback 0.5.1

Feb 13th, 2010

Nun ist es soweit, ich möchte die erste alpha-Version meines neuen Backuptools shaback veröffentlichen. Die Idee hinter diesem Tool habe ich hier schon einmal umrissen: Blogeintrag.

Das Programm habe ich als Prototyp zunächst in Python 2.6 geschrieben. Wenn es sich bewährt, werde ich das vielleicht später noch in C++ umsetzen. Das würde sich dann aber nur lohnen, wenn es dadurch auch deutlich schneller wird…

Shaback 0.5.1 shaback-0.5.1.py Version: 0.5.1
25.5 KiB 115 Downloads Details...

Idee für Backup-Tool

Feb 9th, 2010

Seit einer ganzen Weile beschäftigt mich die Fragestellung, wie man am besten Backups von all seinen Rechner anfertigt. Diese Backups müssen natürlich endweder physisch beweglich gespeichert werden, damit man sie z.B. auch räumlich getrennt lagern kann. Oder aber, man sichert gleich alles über das Internet auf einem entfernten Rechner, der z.B. irgendwo in einem Rechenzentrum für diesen Zweck gemietet wurde.
Gerade bei Datensicherungen über langsame Netzwerkverbindungen muss man natürlich besonders die dabei zu übertragende Datenmenge im Auge behalten. Wenn man viele Rechner auf einen Backupserver sichern will, muss man auch sehr auf den absoluten Platzbedarf achten. Vor allem möchte man hier auch doppelt vorhandene Dateien nach Möglichkeit nur einmal aufbewahren müssen.

Was man eigentlich generell vom Backup-Tool seines Vertrauens erwartet:

  • Inkrementelle Sicherung, damit nicht immer alles hin- und herkopiert werden muss
  • Aufbewahren mehrerer Snapshots, damit man nicht nur eine Kopie hat, sondern eben auch noch den Stand von gestern, vorgestern und vor einem Monat.
  • Die Sicherung muss wenigstens insofern platzsparend erfolgen, als dass Dateien, die sich nicht geändert haben, nicht erneut abgelegt werden.
  • Besser wäre es, wenn das auch für verschobene bzw. umbenannte Dateien gilt, deren Inhalt gleich geblieben ist.
  • Noch besser wäre es, wenn eine Datei selbst dann nur einmal abgelegt werden muss, wenn sie in verschiedenen Backupsets vorkommt, wenn also mehrere Rechner die inhaltlich gleiche Datei sichern wollen. Gerade wenn das ganze Betriebssystem mitgesichert wird, dürfte der Anteil der mehrfach vorhandenen Dateien recht groß sein.
  • Wenn man auch Diskimages von virtuellen Maschinen (z.B. vmdk-Dateien bei VmWare) sichern will, wäre es sehr hilfreich, wenn man auch die Änderungen innerhalb einer einzelnen Datei inkrementell sichern könnte. Diskimages sind sehr groß, ändern sich aber gewöhnlich immer nur blockweise, so dass auch immer große Bereiche unverändert bleiben.
  • Für Offsite-Backups muss man die gesicherten Dateien verschlüsseln können.
  • Oftmals ist es auch wünschenswert, dass eine einfache Komprimierung der Dateien erfolgt. Bestimmte Dateitypen sollte man davon aber ausnehmen können, da sich eine Komprimierung nicht für alle Dateitypen lohnen wird.

Snapshots mit rsync

rsync bietet von Hause aus eine wunderbare Möglichkeit, platzsparend Snapshots zu speichern. Dabei werden dann nur neue oder geänderte Dateien kopiert. Für bereits im letzten Snapshot existierende Dateien legt rsync einfach einen Hardlink auf die bereits vorhandene Kopie an. Ändert sich jedoch der Pfad oder Name einer Datei, kann rsync keine Zuordnung mehr herstellen und legt eine neue Kopie an.

Apple verwendet in seiner TimemachineTM ebenfalls diesen Hardlink-Trick.

Noch mehr Platz sparen mit Message-Digests

Als ich mir den Chaos Radio Express-Podcast über das Versionsverwaltungssystem git anhörte, kam mir folgende Idee:

git hat nämlich ein ganz ähnliches Problem wie ein Backuptool: Es muss zum einen entscheiden, ob sich eine Datei gegenüber einer Vorgängerversion geändert hat, und es muss diese Datei sichern, falls sich der Inhalt geändert hat. In git wird dieses Problem auf eine sehr einfache und elegante Art und Weise gelöst. Für jede Datei wird einfach ein Hash-Wert (in diesem Fall sha1) berechnet. Im Repository wird der Inhalt der Datei dann in einer Datei abgelegt, deren Name dem Hash-Wert entspricht. Gibt es diese Datei bereits im Repository, wurde diese Version der Datei offensichtlich bereits gesichert. Oder aber es gibt bereits eine andere Datei, die genau den gleichen Inhalt hat. Auch in diesem Fall ist ja eine weitere Sicherung nicht mehr erforderlich. Somit müssen Datei auch nicht mehrfach gesichert werden, wenn sie unterschiedliche Namen oder Pfade haben.

Diese Idee habe ich in Form eines in Python geschriebenen Prototypen umgesetzt, den ich hier in Kürze vorstellen werde.

Tags: ,

Jakelib2-2.0.3

Jan 20th, 2010

Nach gaaaanz langer Zeit habe ich endlich einmal wieder ein kleines Update meiner jakelib2 veröffentlicht. Die einzige Verbesserung ist, dass sich das Ding jetzt auch wieder unter Mac OS X 10.6 bauen lässt.

jakelib2-2.0.3 jakelib2-2.0.3.tar.gz Version: 2.0.3
919.3 KiB 187 Downloads Details...

Vom iPhone

Jan 16th, 2010

Ich habe mir eben die iPhone-App “Wordpress 2″ installiert. Damit kann ich nun auch bequem unterwegs Posten :-)

Tags: