Я створюю простий сценарій Bash, щоб витягнути час / дату зміни файлу віддаленого файлу через HTTP.
Приклад файлу: http://example.com/bar/example.pdf
Це можна зробити, не завантажуючи власне файл? Якщо ні, то яка найкраща альтернатива?
Я створюю простий сценарій 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:'
може дати вам те, що ви хочете, але, як було сказано, це дуже залежить від сервера.
HEAD
. Тим не менш, і ці сайти дадуть вам результат, оскільки вони повинні доставити все.
--head
варіант, а не -X HEAD
його більш короткий, щоб команда стала: curl -s -v --head http://foo.com/bar/baz.pdf 2>&1 | grep '^< Last-Modified:'
curl -svX HEAD
ще більш короткий ...
У відповіді сервера зазвичай є Last-Modified
поле, ви можете перевірити його, не завантажуючи файл. Немає необхідності у використанні -X HEAD
, немає спеціальної опції -I
для цього (на -s
Пригнічує висновок про ході роботи ) :
curl -sI http://example.com/bar/example.pdf | grep -i Last-Modified
Також у моєму випадку не встановлено завиток (я роблю сценарій для вбудованого пристрою) , просто wget
. Шлях із wget є:
wget --server-response --spider http://example.com/bar/example.pdf 2>&1 | grep -i Last-Modified
У --server-response
друкує заголовки, і --spider
опція змушує не завантажувати сторінки, а перевірити їх існування.
curl
краща відповідь, ніж прийнята. Можливо, використовуючи, grep -i
оскільки часто "останній модифікований" має інший випадок.