Я даю очень простую команду, такую как

wget http://www.example.com/updates/Avail.asp -O avail

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

Но я продолжаю получать

The file is already fully retrieved; nothing to do.

Насколько я могу судить, wget определяет, что файл существует и имеет тот же размер, что и файл на удаленном сервере, и поэтому пропускает передачу. Кажется, игнорирует все метки времени.

Проблема в том, что файл, вероятно , изменился, но размер остался прежним. Как я могу получить Wget, чтобы загрузить его снова?

Я рассмотрел как это сделать:

wget -v http://www.jepptech.com/tfr/Available.asp?UserID=Public -O - > avail

Но я боюсь, что это приведет к потере пользы, если передача не удастся.

Мета: какие критерии использует wget для определения того, что файл был загружен? Это только размер файла, как я подозреваю?


Отвечая на некоторые комментарии:

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

Я попробовал wget -N ... и это не помогло. Я также получил это сообщение: WARNING: timestamping does nothing in combination with -O. See the manual for details.

Опция --no-cache также не помогла. Насколько я понимаю, это прагма для удаленных серверов, говорящих им не кэшировать файл. Я не думаю, что это говорит wget, что локальная копия должна игнорироваться.

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

Re: «Возможные дубликаты Как заставить перезагружать с Wget?", это решение состояло в том, чтобы использовать -O - > avail , о которой я уже думал, но вижу мои предыдущие комментарии о том, что я не хочу стереть это.

Re: «Релевантно: как разрешить wget перезаписывать файлы» - да, я уже нашел это решение. Это решает другую проблему, но не эту. Хотя одним из непринятых ответов было использование вместо этого curl , и я думаю, что собираюсь пойти по этому пути.

Спасибо за вклад каждого.

0