Отримання md5 під час роботи wget


10

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

Який найкращий спосіб зробити це? Я не бачу wgetможливості розрахувати MD5 під час завантаження (на диво), тому, мабуть, використання teeбуло б шляхом?


Чи можливо це? Я впевнений, що вам потрібен весь двійковий файл, щоб перевірити хеш. Я сумніваюся, навіть розбиття його на кроки (тобто хеш при його завантаженні) було б можливим, оскільки ви, можливо, не отримували файл у послідовному порядку. Так чи інакше, я був би радий побачити, чи є у когось рішення.
n0pe

@MaxMackie: Це, безумовно, можливо: оскільки я завантажую весь файл, wget теоретично міг би запустити його через MD5. Якщо це не так.
Fixee

Відповіді:


12

Насправді це можливо:

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

Однак це передбачає, що ви заздалегідь маєте хеш у файлі.


1
Це виглядає чудово, і я не бачу, як це передбачає щось про те, щоб "заздалегідь мати файл". Він просто генерує суму, коли ви йдете разом, і записує її у файл, який ви можете використовувати для порівняння пізніше. Єдиним уловом може бути накладна пам'ять.
Калеб

2
@Caleb Яка пам’ять над головою? md5sum(і будь-який інший поширений алгоритм хешу, такий як сімейство SHA) працює в постійній пам'яті. Вони розроблені для роботи на потоках.
Жил 'SO- перестань бути злим'

з додатковим 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.