У меня есть задание cron на сервере, который раз в день использует wget
чтобы загрузить "Параметры ориентации Земли" и данные за секунду с сервера НАСА. В частности:
wget https://gemini.gsfc.nasa.gov/500/oper/solve_apriori_files/usno_finals.erp -O .eops
wget https://gemini.gsfc.nasa.gov/500/oper/solve_apriori_files/ut1ls.dat -O .ut1ls
Это прекрасно работает. Однако кажется, что когда сервер недоступен, wget
затирает мои локальные файлы (размер файла 0). Есть ли способ сказать wget
для отмены, если сервер недоступен, и оставить локальный файл нетронутым. (Файлы содержат прогнозы на пару месяцев, поэтому пропустить обновление в течение нескольких дней, пока сервер не вернется, не проблема).
Это задокументированное поведение -O
, поэтому вам не следует использовать его, если это не то поведение, которое вам нужно.
По умолчанию wget
именует файлы, используя то же имя, что и сервер (в зависимости от версии), или, если оно не задано, базовое имя URL. Поскольку вам нужно другое имя, вы должны воспользоваться этим.
Например, вы можете загрузить файл, а затем скопировать его поверх существующего файла, только если загрузка прошла успешно.
wget https://gemini.gsfc.nasa.gov/500/oper/solve_apriori_files/usno_finals.erp && \
mv usno_finals.erp .eops
Так как wget
истекло время, нет usno_finals.erp
был создан, wget
вернул код выхода из ошибки и mv
никогда не звонили.
Когда кто-то в Годдарде вытащит голову из своего ... чего угодно ... и исправит свой сервер, вы увидите, что файл создается, как ожидалось.