Web-Seite Carsten von Olnhausen Carsten von Olnhausen
Bilder werden geladen...
Windows Form Tool
CvO FileSync
Aufgabe: Abgleich großer Festplatten mit vielen kleinen Dateien
Ergebnis eines Abgleich Erstellung dieser Web-Seite. Es wurde in diesem Falle der aktuelle Arbeitsstand mit der Sicherung verglichen
eine eigene Anwendung für den File Sync programmieren?

Ich hatte eine Shareware die ähnliches leistete. Diese Anwendung erfüllt viele meiner Ansprüche, aber eben nicht alle.

Daher entschloss ich mich, eine eigene Anwendung umzusetzen.

Die beiden Hauptaufgaben die es lösen galt:

Abgleich von aktuellem Dateibestand mit der Sicherung, Aktualisierung der Unterschiede.

Abgleich der aktuellen Version auf der Festplatte und dem Stand auf den USB-Stick.


Beispiel der Einstellungen für einen Abgleich Auftrag.
Meine Anforderungen:
Primär schnell musste der Abgleich erfolgen, da man im Regelfall darauf wartet.

Es musste möglich sein, mehrere Verzeichnisse auf verschiedenen Festplatten auf den USB-Stick abzugleichen. Also Daten von Order D:\Texte und Laufwerk E:\Prog. Also den aktuellen Stand abends sichern um diese im Home Office weiter zu bearbeiten. Auf dem Home Office System damit sehr schnell den Stand vom Arbeitspatz Rechner wieder herstellen.

Die Einstellungen sollten es erlauben bestimmte Verzeichnisse vom Abgleich auszuschließen, da diese nur temporäre Daten enthalten, die nicht erforderlich sind.

Ebenfalls sollten Verzeichnisse mit lokalen Einstellungen ausgeschlossen, da diese auf zwei Rechner unterschiedliche Konfigurationen beschreiben welche nicht abgeglichen werden dürfen.

Ebenfalls sollte es möglich sein Extensionen zur Berücksichtigen oder auszuschließen.

Durch diese Konfigurationsmöglichkeiten sollte ein völlig universelles Tool geschaffen werden.

CvO File Sync ist ein unverzichtbares Tool für mich:
Im Mai 2006 begann ich mit der Umsetzung dieses Werkzeuges. Seit der Fertigstellung im Juni 2006 wird das Tools ständig weiterentwickelt und verbessert.

Mit den Anforderungen sehr große Verzeichnisbäume abzugleichen, wurden das Programm extrem optimiert um diese Aufgabe mit annehmbarer Verarbeitungszeit durchführen zu können.

Ein Vergleich von 161 376 Dateien von 25 055 Verzeichnissen wird heute im ersten Durchlauf in 47 Sekunden durchgeführt. Wiederholt man den Vergleich nach dem Abgleich der unterschiede, dauert diese Vergleich nur noch 15 Sekunden, da nunmehr der Cache des Betriebssystem eine noch schneller Verarbeitung ermöglicht.

Lässt man auch Verzeichnisse und Dateien ohne Unterschied mit in die Liste aufnehmen, dauert der Vergleich im zweiten Durchlauf aus dem Cache 8 Minuten und 8 Sekunden. Der Speicherverbrauch ist bei diesem kleinen Beispiel vernachlässigbar.

Das Thema hier lautet einfach in 45 Sekunden sind Änderungen von 160 000 Dateien ermittelt worden. An Tagen mit sehr hohem Änderungsindex sind als Ergebnis 300 Dateien wirklich auf den Sicherungsdatenträger zu kopieren.

Der Punkt ist einfach, dauert eine Prüfung bzw. ein Abgleich zu lange, führt man die Sicherung nicht immer durch. Durch diese Lösung habe ich seit 2006 immer aktuelle Sicherungen aller meine Daten.
Beispiel Abgleich mehrere Aufträge in einem Abgleich Auftrag.
Windows Suche, früher einmal eine schnell reine Suche in Dateinamen und Verzeichnisnamen. Leider mutierte dieses Werkzeug zu einem sehr langsamen Tool, welches netterweise ebenfalls innerhalb der Dateien sucht. Eher quälend langsam. Die Lösung in File Sync bildet die alte Logik ab und sucht nur in den Namen.
Windows Form Tool
CvO FileSync
Ergebnis eines Abgleich Erstellung dieser Web-Seite. Es wurde in diesem Falle der aktuelle Arbeitsstand mit der Sicherung verglichen.
Windows Form Tool
CvO FileSync
Beispiel der Einstellungen für einen Abgleich Auftrag.
Windows Form Tool
CvO FileSync
Beispiel Abgleich mehrere Aufträge in einem Abgleich Auftrag.
Windows Form Tool
CvO FileSync
Windows Suche, früher einmal eine schnell reine Suche in Dateinamen und Verzeichnisnamen. Leider mutierte dieses Werkzeug zu einem sehr langsamen Tool, welches netterweise ebenfalls innerhalb der Dateien sucht. Eher quälend langsam. Die Lösung in File Sync bildet die alte Logik ab und sucht nur in den Namen.
Windows Form Tool
CvO FileSync
CvO File Sync Suche nach index.htm
Windows Form Tool
CvO FileSync
CvO File Sync Ergebnis : Suche nach index.htm
Windows Form Tool
CvO FileSync
Aufgabe: Abgleich großer Festplatten mit vielen kleinen Dateien
Individual Software, ASP.NET Remote Documents, Login
Die Aufgabe welche es zu lösen galt:
Nicht nur die Festplatten werden immer größer, auch die Anzahl der Dateien und Verzeichnisse wächst beständig. Zwar werden die Festplatten immer schneller, doch irgendwann kommt für ein System der Zeitpunkt, an dem es problematisch wird.

Bei einem meiner Kunden werden seit 2003 Daten erfasst. Die Lösung über die Jahre war immer, die zentrale Festplatte durch eine neue größere zu ersetzen. Diese Lösung erschien günstiger als die Individual Software zu überarbeiten, welche die Daten ablegt oder zur Verfügung stellt.

Die Alternative wäre, diese Individual Software Anwendung so zu erweitern, das sie mehrere Laufwerke für die Datenspeicherung verwendet.

Was ist passiert? Das Sicherungskonzept für die Festplatten versagte. Es wurde zu Anfang eine Anwendung wie File Sync verwendet. Diese Anwendung hatte den kleinen Nachteil, dass es jedes gefundene Verzeichnis und alle Dateien nach dem Abgleichvorgang in einer Liste anzeigte. Der Crash erfolgte aus einem sehr simplen Grund. Eine Anwendung erhält maximal 2 GB Arbeitsspeicher. Diese Anwendung benötigte bei belegten Festplatten mehr Arbeitsspeicher als die verfügbaren 2 GB.

Zudem gab es ein weiteres Problem. Diese Menge an Einträgen wurde im Speicher verwaltet. Die Anwendung verwendete keine spezielle Logik, um dann mit einer solchen Menge von Daten umgehen zu können. Daher dauerte der reine Abgleichvorgang recht lange, zuletzt etwa 8 Stunden.

Da man aber nicht auf ein Backup der Daten verzichten konnte, war hier eine Lösung gefragt.


Kopieren von Terabytes von Daten
In den Anfängen, da wir noch von 500 GB Daten sprechen, war die Hochrüstung einer Datenfestplatte von 500 GB auf 1TB noch einfach an einem Wochenende möglich. Das System ging Freitagabend vom Netz. Die Daten wurden übers Wochenende auf die neue Festplatte kopiert und Montagmorgen ging das System wieder ans Netz.
Aktuell sind wir bei einer 3TB großen Platte angekommen, welche zu 75% voll ist. Die Anzahl der Dateien und Verzeichnisse auf eine Sicherungsplatte zu übertragen, benötigt über 36 Stunden. Ein normaler Kopiervorgang scheidet hier also aus Zeitgründen für eine tägliche Sicherung völlig aus.
Aktuell sind wir bei einer 3TB großen Platte angekommen, welche zu 75% voll ist. Die Dateien und Verzeichnisse auf eine Sicherungsplatte zu übertragen benötigt über 36 Stunden. Ein normaler Kopiervorgang scheidet hier also für eine tägliche Sicherung aus Zeitgründen völlig aus.
Eine der wichtigsten Erkenntnisse war, wenn man eine Liste der Unterschiede benötigt, darf diese Liste nicht mehr als den vorhandenen Arbeitsspeicher benötigen.
Lösung mit CvO File Sync:
Daher wurde CvO File Sync mit einer entsprechenden Option ausgestattet, nur die Unterschiede zu erfassen. Positive Vergleiche wurden somit nicht aufgenommen und sparten Arbeitsspeicher.

Die Laufzeit des Abgleichs ist von zwei Faktoren abhängig. Zum einen die reine Verarbeitung - einlesen der Verzeichnisse Pfad 1 und einlesen der Verzeichnisse Pfad 2. Hier dauert der Vorgang eine Zeit X. Zu Beginn des Abgleichs kostet diese Verarbeitung den Hauptanteil der Zeit.

Wird nun eine umfangreiche Liste im Arbeitsspeicher vorgehalten, verlängert sich die Zeit um weitere Einträge an die Liste anzuhängen. Intern wurde hier ein einfacher .NET DataTable verwendet. Mit wachsender Anzahl von Datensätzen war irgendwann ein Punkt erreicht, der mehr Verarbeitungszeit für das Aufnehmen eines Datensatzes in die Liste, als das Lesen der Verzeichnisse kostete. Eine interessante Beobachtung, die Anzahl der Datensätze war so groß, das hier sehr lange Zeiten gemessen werden konnten.

Der Trick, mit der Aufnahme nur der Unterschiede brachte hier in doppelter Hinsicht Vorteile. Der Bedarf an Arbeitsspeicher war geringer und vor allem konnte ein Vergleich erheblich schneller durchgeführt werden. Eine Datenmenge die zu kopieren über 24 Stunden dauerte, konnte mit CvO File Sync dann in einer Stunde verglichen werden.

In diesem Falle waren die Unterschiede eher gering. In den allermeisten Fällen kommen nur neue Dateien auf dem aktiven System hinzu. Die Individual Software Anwendung hat einen Dokument-Verwaltungs-Charakter, der ein Löschen von Dokumenten nicht erlaubt. Nur in temporären Zwischenspeichern kann es zu Löschvorgängen kommen. Dokumente werden versioniert, aber niemals gelöscht. Somit kann immer nachvollzogen werden, was in einem Dokument verändert wurde.

.