Heute gibt es mal wieder was zu sehen. Nachdem ich das letzte Mal den Grundstein für meine Backup-Software gelegt habe, ging es jetzt darum, Stück für Stück die Software zu erweitern. Schritt 2 sieht vor, dass ich überprüfen möchte, ob meine Sicherung erfolgreich war. Wie macht man das am besten? Einfach vergleichen, ob die Dateigröße übereinstimmt? Nein, dass ist zu simpel – ich möchte wirklich sicher sein. Meine erste Idee war, dass ich beide Dateien (aus Quelle und Ziel) wirklich Byte für Byte miteinander vergleiche. Aber eine kleine Internetrecherche brachte mich auf eine andere Idee: Aus dem Inhalt beider Dateien einen MD5-Hash berechnen und den miteinander vergleichen. Die Chance, dass hier das Gleiche entsteht, ist zwar vorhanden, aber mit dem Risiko kann ich leben. Außerdem habe ich dann die Möglichkeit wenn ich später noch das inkrementelle Backup einbaue, dass ich an jedes Paket eine Datei mit den MD5-Hashes anhänge und mir den Vorteil erkaufe, nicht nur nachsehen zu müssen, ob an der Datei geändert wurde, sondern auch inhaltliche Änderungen registriere.
Und dann war mal wieder die Oberfläche dran. Ich musste wieder einige Klassen in meine gemeinsam genutzte Bibliothek verschieben, Namespaces korrigieren und dann konnte ich mich darum kümmern, dass ich das Quellverzeichnis auswählen kann. Und nun das Ergebnis von Schritt 3: Ich kann das Quellverzeichnis auswählen:
Im Zusammenhang mit dem MD5-Hash ist mir natürlich aufgefallen, dass ich da etwas mit dem Feuer spiele. Denn wenn ich große Dateien (z.B. 1GB) miteinander vergleiche, dann steigt mir das Programm mit einem Fehler aus: Out of memory. Bei 16GB Hauptspeicher etwas merkwürdig, aber um solche Fehler will ich mich erst kümmern, wenn das Backup bei mir in Echtbetrieb geht.