Ottenere md5 durante wget


10

Sto wgetingigantendo file enormi (oltre 100 GB) e quindi confrontando il mio md5sum con la somma pubblicata nel repository. Che ci crediate o no, md5sumrichiede una quantità non banale di tempo per essere eseguito su un file di queste dimensioni, quindi mi piacerebbe ottenere la somma in parallelo con il download.

Qual'è il miglior modo per farlo? Non vedo wgetun'opzione per calcolare MD5 durante il download (sorprendentemente), quindi immagino che usare teesarebbe la strada da percorrere ?!


È possibile? Sono abbastanza sicuro che hai bisogno dell'intero binario per controllare l'hash. Dubito che anche dividerlo in passaggi (cioè hash mentre viene scaricato) sarebbe possibile visto che potresti non ricevere il file in ordine sequenziale. Ad ogni modo, sarei felice di vedere se qualcuno ha una soluzione.
n0pe

@MaxMackie: È sicuramente possibile: dal momento che sto scaricando l'intero file, wget potrebbe teoricamente eseguirlo tramite MD5. Unf, non lo fa.
Fixee,

Risposte:


11

In realtà, questo potrebbe essere possibile:

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

Tuttavia, questo presuppone che tu abbia l'hash in un file in anticipo.


1
Questo sembra a posto, e non vedo come si assume qualcosa dall'avere il "contenuto in un file in anticipo". Genera semplicemente la somma mentre procedi e la scrive in un file che puoi utilizzare per confrontare in seguito. L'unico problema potrebbe essere il sovraccarico di memoria.
Caleb,

2
@Caleb Quale sovraccarico di memoria? md5sum(e qualsiasi altro algoritmo hash comune come la famiglia SHA) opera in memoria costante. Sono progettati per funzionare su flussi.
Gilles 'SO- smetti di essere malvagio' il

con un ulteriore awkalla fine è possibile rimuovere automaticamente `-` a alla fine. wget -O - "https://example.org/myFile.jpg" | tee file | md5sum | awk '{print $1}' > md5.txt
Max
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.