Ответы:
Наиболее распространенный способ проверки целостности загружаемых файлов - использование контрольных сумм 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 говорит по этому вопросу.