Проверьте MD5 заголовка файла, размещенного на веб-сервере

Я пишу скрипт bash для периодической загрузки установочного файла с использованием cURL. Проблема заключается в следующем, файл имеет размер около 110 МБ и всегда имеет одинаковое имя файла.

Я могу скачать файл, проверить его хэш (md5, sha1) и сравнить его с ранее загруженным файлом:

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

Я хотел бы запускать этот скрипт каждые полчаса, и загрузка 110 МБ ни за что (та же версия файла) беспокоит меня. Есть ли способ загрузить первые 500 КБ с помощью curl в командной строке?

Мой текущий обходной путь - сравнить размер файла с заголовком HTTP, но я все же хотел бы получить ответ на вопрос выше и узнать, возможно ли это. Большое спасибо.

curl -sI ' http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H 'Host: domain.tld' -H 'Пользователь-агент: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) как Gecko' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0,9,/; q = 0,8' -H 'Accept-Language: en-US,en;q=0,5' -H 'Accept-Encoding: gzip, deflate, br' -H 'DNT: 1' -H ' Соединение: keep-alive' | grep 'Content-Length:'

1 ответ

Можете ли вы доверять датам изменения вашего файла как на клиенте, так и на сервере? Если это так, вы можете использовать функциональность HTTP "условный GET"/"If-Modified-Since" с curl"s -z вариант. Не нужно ничего скачивать вообще. Это встроенная функциональность протокола HTTP, которая с самого начала активно использовалась повсеместно.

Не нужно ничего скачивать, если дата изменения файла на сервере не новее, чем дата, которую вы скачали в прошлый раз.

Для тебя bash сценарий, рассмотрите возможность использования stat(1) чтобы найти время мод локального файла, чтобы вы могли передать эту информацию в curl -z …,

Другие вопросы по тегам