Назад | Перейти на главную страницу

linux apache cron-job - сначала проверьте файл

Я получаю XML-файл с внешнего стороннего сервера и копирую его на свой локальный сервер. Проблема в том, что время от времени внешний сервер не работает для обслуживания, и в это время я не хочу, чтобы команда crontab перезаписывала мой локальный файл. Есть ли способ перед копированием проверить, существует ли файл?

Текущий crontab

0 * * * * username wget -O /home/www/inc/xml/wufoo.xml https://AAAA-BBBB-CCCC-DDDD:x@myaccount.wufoo.com/api/v3/reports/123456/entries.xml

Вы можете загрузить в другой файл и перезаписать wufoo.xml, только если wget код выхода в порядке:

wget -O /home/www/inc/xml/wufoo.xml.new https://url/entries.xml && 
mv /home/www/inc/xml/wufoo.xml.new /home/www/inc/xml/wufoo.xml 

Вы можете переместить это в отдельный скрипт для ясности и вызвать этот скрипт из вашего crontab.

Изменить: или попробуйте curl, который по умолчанию не усекает выходной файл: curl -o /home/www/inc/xml/wufoo.xml https://url/entries.xml

Это должно загружать файл, только если он не существует.

if [ ! -f /home/www/inc/xml/wufoo.xml ]; then wget -O /home/www/inc/xml/wufoo.xml https://AAAA-BBBB-CCCC-DDDD:x@myaccount.wufoo.com/api/v3/reports/123456/entries.xml; fi