Получение md5 во время wget


10

Я wgetсобираю огромные файлы (более 100 ГБ), а затем сравниваю сумму md5 с суммой, размещенной в хранилище. Хотите верьте, хотите нет, но md5sumдля запуска файла такого размера требуется нетривиальное время, поэтому я хотел бы получить сумму параллельно с загрузкой.

Какой лучший способ сделать это? Я не вижу wgetвозможности рассчитать MD5 во время загрузки (что удивительно), поэтому я думаю, что использование teeбудет способом ?!


Это возможно? Я уверен, что вам нужен весь двоичный файл, чтобы проверить хэш. Я сомневаюсь, что даже разбиение его на этапы (т. Е. Хэш при загрузке) было бы возможно, поскольку вы не получаете файл в последовательном порядке. В любом случае, я был бы рад увидеть, если у кого-то есть решение.
n0pe

@MaxMackie: Это определенно возможно: поскольку я загружаю весь файл, теоретически wget может запустить его через MD5. Не, это не так.
Fixee

Ответы:


11

На самом деле это может быть возможно:

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

Однако это предполагает, что у вас есть хеш в файле заранее.


1
Это выглядит хорошо, и я не понимаю, как это предполагает наличие «заранее в файле». Он просто генерирует сумму по мере продвижения и записывает ее в файл, который можно использовать для последующего сравнения. Единственный улов может быть накладные расходы памяти.
Калеб

2
@Caleb Какие накладные расходы памяти? md5sum(и любой другой общий алгоритм хеширования, такой как семейство SHA) работает в постоянной памяти. Они предназначены для работы на потоках.
Жиль "ТАК - перестань быть злым"

с дополнительным awkв конце вы можете удалить `-` a конец автоматически. wget -O - "https://example.org/myFile.jpg" | tee file | md5sum | awk '{print $1}' > md5.txt
Макс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.