Erhalten von md5 während wget

10

Ich mache wgetriesige Dateien (über 100 GB) und vergleiche dann meine md5sum mit der Summe, die im Repository veröffentlicht wurde. Ob Sie es glauben oder nicht, es md5sumdauert nicht unerheblich lange, bis eine Datei dieser Größe ausgeführt wird. Daher möchte ich die Summe parallel zum Download erhalten.

Was ist der beste Weg, dies zu tun? Ich sehe keine wgetOption zur Berechnung von MD5 während des Downloads (überraschenderweise), also denke ich, dass die Verwendung teeder richtige Weg wäre?!

Fixee
quelle
Ist das möglich? Ich bin mir ziemlich sicher, dass Sie die gesamte Binärdatei benötigen, um den Hash zu überprüfen. Ich bezweifle, dass es möglich ist, es sogar in Schritte zu unterteilen (dh Hash, wenn es heruntergeladen wird), da Sie die Datei möglicherweise nicht in sequentieller Reihenfolge erhalten. In jedem Fall würde ich mich freuen, wenn jemand eine Lösung hat.
nppe
@ MaxMackie: Es ist definitiv möglich: Da ich die gesamte Datei herunterlade, könnte wget sie theoretisch über MD5 ausführen. Unf tut es nicht.
Fixee

Antworten:

11

Eigentlich könnte dies möglich sein:

wget -O - http://example.com/file | tee file | md5sum > file.md5

Dies setzt jedoch voraus, dass Sie den Hash zuvor in einer Datei haben.

n0pe
quelle
1
Das sieht gut aus, und ich sehe nicht, wie es davon ausgeht, dass "vorher in einer Datei" ist. Es generiert nur die Summe, während Sie fortfahren, und schreibt sie in eine Datei, die Sie später zum Vergleichen verwenden können. Der einzige Haken könnte der Speicheraufwand sein.
Caleb
2
@Caleb Welcher Speicheraufwand? md5sum(und jeder andere gängige Hash-Algorithmus wie die SHA-Familie) arbeitet im konstanten Speicher. Sie sind für Streams konzipiert.
Gilles 'SO - hör auf böse zu sein'
Mit einem zusätzlichen awkam Ende können Sie das `-` a am Ende automatisch entfernen. wget -O - "https://example.org/myFile.jpg" | tee file | md5sum | awk '{print $1}' > md5.txt
Max