Letzte relevante Änderung: 27.04.2019

FileCheck

Um große Datenmengen zu vergleichen oder die Korrektheit von Dateien zu überprüfen, ist es oft zweckmäßig, anstelle eines byte-weisen Vergleichs Prüfsummen zu bilden und diese zu vergleichen. Beim Dateivergleich bietet sich dies an, wenn etwa große Dateien auf zwei getrennten Systemen verglichen werden sollen, ohne dabei beide Exemplare auf dasselbe Gerät kopieren zu müssen. Zur Validierung von Dateien – oft bei aus dem Internet heruntergeladenen Installationsdateien praktiziert – stellt ein direkter Datei-Vergleich ohnehin keine Alternative dar, weil keine erwiesenermaßen valide Kopie der Datei zur Verfügung steht. Prüfsummen bieten hier einen Ausweg, weil deren kryptographische Eigenschaften sicherstellen sollen, dass es nur unter enormem Rechenaufwand möglich ist, eine Datei mit abweichendem Inhalt aber identischer Prüfsumme zu bilden.

Unter Windows stellt das Programm md5summer eine bekannte Lösung dar, um große Dateimengen vergleichen zu können. Dieses nützliche Programm ist allerdings nur für Windows verfügbar und leidet unter einer schlechten Performance. Daher habe ich mir zum Ziel gesetzt, eine plattformunabhängige Lösung zu implementieren, die zu md5summer kompatibel ist, aber erheblich schneller sein soll. FileCheck ist bei der Berechnung der Prüfsumme einer einzelnen großen Datei ca. 3x so schnell wie md5summer. Bei der Berechnung der Prüfsummen vieler kleiner Dateien war FileCheck in einem Beispiel mit 44.000 Dateien mit einer Größe von insgesamt 1 GiB nach 10 Sekunden fertig, während md5summer 6:30 Minuten benötigte, was der 39-fachen Zeit entspricht.

FileCheck nutzt bei der Berechnung mehrere Threads, um die Ressourcen des Computers optimal auszunutzen. Dabei ist ein Thread mit dem Einlesen der Dateinamen der zu prüfenden Dateien beschäftigt, und eine beliebige Anzahl an Threads kann dann zur Berechnung der Prüfsummen eingesetzt werden. Der größte Flaschenhals ist dabei in der Regel jedoch nicht die Rechenleistung des Prozessors, sondern die Bandbreite der Festplatte oder SSD. Deshalb nutzt das Programm standardmäßig bereits auf Einkern-CPUs zwei Threads zur Prüfsummenberechnung, sodass im Idealfall die Berechnung der Prüfsumme auf den bereits eingelesenen Dateien erfolgt, während parallel schon neue Daten eingelesen werden. Da aus dem gleichen Grund das Programm nicht mit der Anzahl der Prozessorkerne skaliert, werden standardmäßig höchstens vier Threads genutzt (bei einer Vierkern-CPU). Die automatische Auswahl einer günstigen Anzahl von Threads kann mit dem Parameter -j überschrieben werden.

FileCheck kann Prüfsummen von Dateien berechnen und diese wahlweise als Liste in eine Datei schreiben oder diese mit einer vorhandenen Prüfsummenliste abgleichen. Das Format dieser Dateien ist kompatibel mit md5summer. Derzeit werden lediglich MD5-Prüfsummen unterstützt; Unterstützung für weitere Algorithmen ist in Planung. Bitte beachten Sie, dass der MD5-Algorithmus gebrochen wurde und damit nicht als kryptographisch sicher anzusehen ist. Weiterhin übernehme ich keine Gewähr für die Korrektheit der von FileCheck berechneten Prüfsummen.

FileCheck bietet besondere Unterstützung für das Versionsverwaltungssystem Subversion. Mit dem Parameter --svn werden nur für die Dateien, die unter SVN-Versionskontrolle stehen, Prüfsummen berechnet. Dazu ist erforderlich, dass SVN in der Umgebungsvariable PATH steht und der Zielpfad in einer SVN-Arbeitskopie liegt.

Aktuelle Version: 0.2
Systemvoraussetzungen:
Download: