Я создаю простой скрипт Bash для извлечения времени / даты модификации файла из удаленного файла через HTTP.
Файл примера: http://example.com/bar/example.pdf
Можно ли это сделать без загрузки самого файла? Если нет, то какая лучшая альтернатива?
Если честно, не напрямую.
Вам нужно будет получить данные с удаленного сайта, чтобы получить информацию о файле.
Обычно это делается с помощью запроса HEAD
, но некоторые (большинство?) серверы не реализовали это правильно и доставляют весь файл, так же как делают запрос GET
. Предполагая, что у вас установлен curl
:
curl -s -v -X HEAD http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
может дать вам то, что вы хотите, но, как уже говорилось, это сильно зависит от сервера.
Ответ сервера обычно имеет поле Last-Modified
, вы можете проверить его, не загружая файл. Не нужно использовать -X HEAD
, для этого есть специальная опция -I
(-s
подавляет вывод прогресса):
curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified
Также в моем случае нет установленного curl (я делаю скрипт для встроенного устройства), просто wget
. Способ с помощью wget:
wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified
--server-response
печатает заголовки, а опция --spider
заставляет не загружать страницы, а проверять их существование.