Как я могу скачать файл, как только он станет доступен в Linux?

212
geek1011

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

Я пытался использовать задание cron с wget, но я не могу понять, как заставить его не создавать пустой файл при ошибке 404.

Это возможно и как?

3

2 ответа на вопрос

2
Toby Speight

You can either check (with test -s) that the file has contents, or simply use the return value of wget. Download to a temporary file, and only if the test passes, then copy to the real output:

$ wget -q -O /tmp/a http://localhost/nonexistent && mv -v /tmp/a /tmp/b $ wget -q -O /tmp/a http://localhost && mv -v /tmp/a /tmp/b ‘/tmp/a’ -> ‘/tmp/b’ $ 
Я почти решил это, используя вариант вашего ответа: `wget -q -O / tmp / a http: // localhost / несуществующий && (mv / tmp / a / tmp / b; echo Success)` geek1011 8 лет назад 0
0
Liran

You can write a bash script that will wget the url and then will check the output. If the output contains lets say "404", delete it. Else you got your file, and you can remove the script from cron (from within the script). You can also use a scripting language to solve this.

Строка `404` может на законных основаниях встречаться в файле; кроме того, в моей системе я получаю совершенно пустой файл, когда даю `wget` несуществующий URI. Toby Speight 8 лет назад 1
@TobySpeight Я дал общее решение. Конечно, требуется более точный анализ. И вы можете легко проверить, пуст ли файл. Liran 8 лет назад 0

Похожие вопросы