Dateiübertragungen und -kopien verifizieren mit Checksummen

(Last Updated On: 30. Januar 2016)

Hier ein kurzer Post der beschreibt, wie man beim Übertragen von Dateien von einem Ort zum anderen schnell sicherstellen kann, dass die File Contents gleich sind

Haben die beiden Ordner die selbe Größe?

Erstmal, bevor ihr genauer analysiert, wollt ihr überhaupt wissen, ob zwei Ordner, die ihr an zwei STellen kopiert habt, ungefähr die selbe Größe haben. DAs lässt sich  über du -sh rausfinden

du -sh /somedir
du -sh /newdir

Die Checksumme bei unterschiedlichen Verzeichnissen

Szenario: Ihr habt zwei Verzeichnisse, die einen anderen PFad haben, in dem sich aber die selben Dateien befinden. Eine Version der Dateistruktur habt ihr unter /somedir und die andere unter /newdir

Im Folgenden gehen wir davon aus, dass wir eine ganzes Verzeichnis mit mehreren Unterordnern kopiert haben, beispielsweise über einen Befehl wie

cp -rpf /somedir/* /newdir

Wir wollen jetzt natürlich sichergehen, dass in newdir wirklich alles aus somedir angekommen ist. ES wäre viel zu aufwändig, jede einzelne Datei zu checksummen und zu vergleichen. Daher bedinene wir uns einem kommando im Format

find -s /somedir -type f -exec md5sum {} \; | cut -d" " -f1 | md5sum

und vergleichen die Checksumme von somedir mit der Checksumme von newdir

find -s /newdir -type f -exec md5sum {} \; | cut -d" " -f1 | md5sum

Zusätzlich zur Checksumme solltet ihr noch grob die Größe der beiden Verzeichniss emiteinander vergleichen.

Die Checksumme bei gleichen Verzeichnissen

Ihr habt auf zwei Systemen verschiedene Dateien im selben Verzeichnis.

find /somedir -xdev -type f -print0 | LC_COLLATE=C sort -z | xargs -0 cat | md5sum -

Und das ander prüft ihr entsprechend gleich auf dem anderen System

find /somedir -xdev -type f -print0 | LC_COLLATE=C sort -z | xargs -0 cat | md5sum -

Downloads verifizieren

Wenn Sie sich Dateien von einem Webserver oder einer sonstigen Quelle herunterladen, veröffentlichen findige administratoren zusätzlich zum Download immer die Checksumme, die der Veröffentlicher des Downloads zuvor festgestellt hat. Sie als Downloadender prüfen dann die checksumme des Veröffentlichers mit der checksumme, die Sie bei Ihrer gedownloadeten Datei bekommen. somit können Sie feststellen, ob entweder beim Download Übertragungsfehler vorgekommen sind und die datei in einem fehlerhaften Zustand heruntergeladen wurde, oder ob vielleicht sogar jemand ohne Wissen des Veröffentlichers die zum Herunterladen angebotene Datei verändert und manipuliert hat, um beispielsweise einen Virus einzuschleusen.

Der Veröffentlicher von Downloads nutzt verschiedene kanäle, um Ihnen seine checksumme bereitzustellen. Einige schreiben die checksumme auf der Seite, auf der die datei heruntergeladen wird, hin. so passiert das Beispielsweise beim Downloaden von Images für den raspberry pi.

2016-01-30_15h13_53

wie sie sehen wird auf der Website vom Raspberry pi die Art der checksumme, in diesem Fall SHA-1, und danach die checksumme selbst, angezeigt. sie als Downloader müssen nur wissen, welchen Befehl Sie auf Ihre heruntergeladene Datei für welche Art von Checksumme ausführen müssen. Die gängigsten Befehle und arten sind:

  • der Befehl md5sum für MD5-Checksummen
  • der Befehl sha1sum für SHA-1 Checksummen
  • cksum für CRC32-Checksummen

Da es sich auf der Website um eine SHA-1Checksumme handelt, können Sie Ihre eigene checksumme rauskriegen über

sha1sum <Datei>

vergleichen Sie nun Ihre Checksumme mit der checksumme auf der Website. Unterscheiden sich diese, würde ich zuerst versuchen, die Datei erneut herunterzuladen. Unterscheidet Sie sich auch beim zweiten Mal, wurde sie womöglich manipuliert und ich würde sie nicht öffnen bzw. verwenden.

Andere Veröffentlicher von Downloads speichern die Checksumme in eine Datei, die dem Download beiliegt. somit können sie auch noch Jahre später, nachdem die Datei womöglich gar nicht mehr zum Download angeboten wird, noch prüfen, ob diese noch korrekt ist. Wenn Sie selbst eine Datei zum Download anbieten und die checksumme in eine Datei schreiben wollen, können Sie beispielsweise eine MD5 Checksumme über

 

md5sum <datei> > checksumme.txt

reinschreiben. Diese Datei bieten Sie dann entweder extra zum Download an, oder Sie packen den ursprünglichen Download und diese Textdatei nochmal in ein extra Archiv, beispielsweise ein .zip oder .rar-archiv, und bieten dann dieses zum Download an.

Wichtig für den Downloader ist dann, dass der nicht die Checksumme dieses Archivs, in dem die checksummen Datei mit drin ist, testet, sondern den eigentlichen Download testet. Wenn Sie etwa eine .rar-Datei downloaden, in der sich eine weitere .rar-Datei mit dem eigentlichen Download und eine Datei mit der Checksumme befindet, dann testen Sie  nicht die äußere .rar-Datei, sondern die .rar-Datei vom eigentlichen Download, da nur auf diese die Checksumme passt.

Sie können die checksumme entweder selber vergleichen, indem Sie einmal in die datei und einmal auf die ausgabe des md5sum-Befehls schauen, oder sie lassen md5sum den Vergleiche machen über

md5sum -c < checksumme.txt

Damit das geht, müssen Sie im Verzeichnis sein, in welchem sich die Datei befindet, deren Checksumme mit der Checksumme in der Datei checksumme.txt zusammenpassen soll.

Umständlich wird dies, wenn Sie die checksummen mehrere Dateien, also beispielswiese von einem ganzen ordner, vergleichen wollen. Wie Sie selbst checksummen von ganzen Ordnern erstellen und diese an einer anderen Stelle vergleichen, habe ich Ihnen wieter oben schon gezeigt. Wenn Sie jedoch einen ganzen Ordner zum Download anbieten oder einen solchen herunterladen, bieteet es sich an, die CRC32-checksummen aller Dateien in einem ordner in eine .sfv-Datei schreiben. .sfv steht für Simple File Verification. Als Veröffentlicher erstellen Sie eine .sfv-Datei mit den Checksummen aller Dateien in einem ordner über die Software QuickSFV, die es sowohl für Windows als auch Linux gibt. Der Downloader kann dann diese .sfv-datei mit dem gleichen Tool öffnen und schauen, ob die Dateien in seinem heruntergeladenen Ordner mit den Checksummen in der .sfv-Datei übereinstimmen.

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren...

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.