Uzyskiwanie md5 podczas wget

10

Mam wgetduże pliki (ponad 100 GB), a następnie porównuję sumę md5 z sumą zaksięgowaną w repozytorium. Wierzcie lub nie, md5sumuruchomienie nieoczekiwanego czasu na pliku o tym rozmiarze, więc chciałbym uzyskać sumę równolegle z pobieraniem.

Jak najlepiej to zrobić? Nie widzę wgetopcji, aby obliczyć MD5 podczas pobierania (co zaskakujące), więc myślę, że użycie teebyłoby dobrym rozwiązaniem ?!

Fixee
źródło
czy to możliwe? Jestem pewien, że potrzebujesz całego pliku binarnego, aby sprawdzić skrót. Wątpię, by nawet rozbicie go na etapy (tj. Hasz podczas pobierania) byłoby możliwe, ponieważ plik nie był odbierany w kolejności sekwencyjnej. Tak czy inaczej, z przyjemnością sprawdzę, czy ktoś ma rozwiązanie.
n0pe
@ MaxMackie: Jest to na pewno możliwe: ponieważ pobieram cały plik, wget mógłby teoretycznie uruchomić go przez MD5. O ile nie.
Fixee

Odpowiedzi:

12

W rzeczywistości może to być możliwe:

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

Zakłada się jednak, że masz wcześniej skrót w pliku.

n0pe
źródło
1
Wygląda to dobrze i nie rozumiem, jak zakłada cokolwiek o tym, że „ma wcześniej w pliku”. Po prostu generuje sumę w miarę postępów i zapisuje ją w pliku, którego można użyć do późniejszego porównania. Jedynym haczykiem może być narzut pamięci.
Caleb,
2
@Caleb Jaki narzut pamięci? md5sum(i każdy inny popularny algorytm skrótu, taki jak rodzina SHA) działa w stałej pamięci. Są zaprojektowane do pracy na strumieniach.
Gilles 'SO - przestań być zły'
z dodatkowym awkna końcu możesz automatycznie usunąć `-` a koniec. wget -O - "https://example.org/myFile.jpg" | tee file | md5sum | awk '{print $1}' > md5.txt
Maks.