Могу ли я доверять статусу выхода wget, даже если он был перезапущен?

Я запустил работу wget с помощью следующей команды:

 urls=(https://example.com/file1 https://example.com/file2 https://example.com/file3 https://example.com/file4) for url in ${urls[@]}; do wget "$url" 2>/dev/null && echo "$url done" >> progress & done 

Это были файлы по 30-40 Г каждый, поэтому я позволил ему работать на ночь. Сегодня я снова проверил и нашел следующее:

 -rw-rw-r-- 1 a staff 13M Mar 18 15:11 file1 -rw-rw-r-- 1 a staff 18M Mar 18 15:12 file1.1 -rw-rw-r-- 1 a staff 38G Mar 18 21:10 file1.2 -rw-rw-r-- 1 a staff 12M Mar 18 15:12 file2 -rw-rw-r-- 1 a staff 44G Mar 18 21:35 file2.1 -rw-rw-r-- 1 a staff 446 Mar 18 21:35 progress -rw-rw-r-- 1 a staff 40G Mar 18 21:24 file3.1 -rw-rw-r-- 1 a staff 4.4M Mar 18 15:12 file3 -rw-rw-r-- 1 a staff 6.5M Mar 18 15:12 file4 -rw-rw-r-- 1 a staff 42G Mar 18 21:27 file4.1 

Другими словами, я вижу несколько filename.N , которые выглядят так, как будто они могут быть правильного размера, но сами файлы filename файлов явно слишком малы. В файле progress сообщается, что все файлы были загружены успешно:

 https://example.com/file1 done https://example.com/file2 done https://example.com/file3 done https://example.com/file4 done 

Я попросил человека, который сделал это доступным для меня, предоставить мне md5sums каждого файла, чтобы я мог видеть, действительно ли какие-либо файлы filename.N являются полными копиями. В то же время, могу ли я смело предположить, что filename.N с наибольшим значением N фактически является полной копией рассматриваемого файла?

Я предполагаю, что процесс wget был перезапущен несколько раз, и именно поэтому у меня есть .N файлы, но при условии, что && echo похоже, сработал, значит ли это, что файлы действительно были загружены правильно или могут быть && был выполнен даже для неполной загрузки?

2 Solutions collect form web for “Могу ли я доверять статусу выхода wget, даже если он был перезапущен?”

Вы можете посмотреть заголовки, отправленные сервером ( --server-response ), и если они включают Content-Length тогда wget выйдет только тогда, когда получит столько байтов. Это упоминается в man-странице для --ignore-length . Но md5 или другие суммы всегда хорошая идея!

Моя интерпретация https://www.gnu.org/software/wget/manual/wget.html

'–no-clobber' Если файл загружается более одного раза в один и тот же каталог, поведение Wget зависит от нескольких параметров, включая '-nc'. В некоторых случаях локальный файл будет сбрасываться или перезаписываться при повторной загрузке. В других случаях он будет сохранен.

При запуске Wget без '-N', '-nc', '-r' или '-p', загрузка одного и того же файла в том же каталоге приведет к сохранению оригинальной копии файла, а вторая копия будет иметь имя ' file.1. Если этот файл снова загружен, третья копия будет называться «file.2» и так далее.

… заключается в том, что wget помещает последние версии в .N-файлы и поэтому может быть доверен. Единственное, что можно было бы исключить, это переопределить WGETRC или другой глобальный wgetrc-файл.

  • wget с подстановочными знаками при загрузке http
  • Загрузите только определенные каталоги с FTP-сайта с помощью wget
  • wget не сохранять файл после загрузки
  • Отфильтруйте гиперссылки с веб-страницы и загрузите все, что соответствует определенному шаблону
  • Почему я не могу зеркально отразить веб-сайт (используя wget)?
  • Проблема при запуске wget внутри скрипта bash с URL-адресом, хранящимся в переменной
  • Статическая компиляция wget
  • Сценарий Bash, создающий нежелательные файлы
  • Использование / dev / tcp с прокси-сервером
  • Извлечение каталога из stdout из wget
  • Сценарий оболочки для захвата одного или нескольких видео Wistia
  • Linux и Unix - лучшая ОС в мире.