Відповіді:
Найпоширеніший спосіб перевірити цілісність завантажених файлів - це використання контрольних сум MD5. Це передбачає, що сайт, який ви завантажуєте, з фактично опублікованих контрольних сум MD5 своїх файлів. Ви можете перевірити контрольну суму MD5, створивши власну контрольну суму завантаженого файлу та порівнявши його з опублікованою контрольною сумою. Якщо вони ідентичні, завантажений файл є повним і не підроблений.
Якщо ви не очікуєте, що файл, який ви завантажуєте, зміниться, ви можете попередньо обчислити контрольну суму та жорсткий код у сценарій, але якщо файл коли-небудь оновлюється, перевірка не вдасться.
Для створення контрольної суми MD5 файлу запустіть md5sum myFile. У випадку wget ця команда може бути корисною, особливо якщо файл, який ви завантажуєте, великий:
wget -O - http://example.com/myFile | tee myFile | md5sum > MD5SUM.
Це створить контрольну суму "myFile" під час завантаження та збереже її у файл MD5SUM, можливо, заощадивши якийсь час.
У випадку перерваного з'єднання, я думаю, що найкращим способом було б перевірити вихідні коди wget. У разі успішного завантаження без помилок wget повернеться 0. Все інше вказує на те, що щось пішло не так. Погляньте на розділ "Стан виходу" man wget.
Код повернення команди, використовуваної для завантаження файлу, підкаже, успішно виконана команда чи ні. Зазвичай зворотний код 0 позначає успіх, а будь-яке ненульове число позначає помилку. Ви можете отримати доступ до коду повернення через $?змінну.
Основний приклад використання wget:
#!/bin/bash
wget foo.tgz &> /dev/null
if [[ "$?" != 0 ]]; then
echo "Error downloading file"
else
echo "Success"
fi
&> /dev/nullперенаправляє весь вихід wget, щоб /dev/nullвін був ідеальним для сценаріїв, АЛЕ це ускладнює wgetпомилки налагодження .
wget -q ... || { handle ; error ; }
manчас прочитання відповіді, і дві речі, про які я збирався сказати, були вже у двох відповідях - тому я зробив два коментарі. Приємного дотику і до вас.
wgetмогло б подумати, що завантаження було завершеним, навіть якщо воно зламалось. Інформація про проксі про розірвані з'єднання TCP проти закритих TCP-з'єднань, що проблематично для HTTP, оскільки він використовує закритий TCP як кінцевий знак за замовчуванням. Ось чому я додав перевірку, чи відповідає розмір файлу із заголовка розмірам завантаженого файлу, коли я запустив масове завантаження. Не впевнений, чи wgetперевіряється така узгодженість чи те, що говорить http spec у цьому питанні.