Я получаю 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