Настройте wget, чтобы не сбрасывать хорошие данные с пустыми данными

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

  • Как получить текст страницы с помощью wget без html?
  • Построение URL-адресов со списком слов и загрузка из URL-адресов с помощью командной строки
  • Загрузите только недавно измененные файлы с помощью wget over FTP
  • Как вы переименовываете файлы в списке, который будет использовать wget?
  • Как использовать wget для загрузки всех ссылок с моего сайта и сохранения в текстовый файл?
  • Wget не будет рекурсивно загружать
  • Загрузите все страницы, которые были связаны на странице в определенном регионе.
  • В чем разница между curl и wget?
  • 2 Solutions collect form web for “Настройте wget, чтобы не сбрасывать хорошие данные с пустыми данными”

    Если вы можете изменить конфигурацию своего веб-сервера или разрешить иметь .htaccess, вы можете настроить собственные страницы ошибок. Например, предположив, что apache как веб-сервер, создайте страницу с ошибкой /var/www/error-pages/404-error.html и добавьте следующее в раздел .htaccess или vhosts.

     Alias /error-pages /var/www/error-pages ErrorDocument 404 /error-pages/404-error.html 

    Вместе с директивой alias вы можете использовать одни и те же страницы ошибок для нескольких vhosts, если у вас их несколько. Это само по себе должно помочь не сбивать, но вы также можете добавить -X error-pages к вашим параметрам wget чтобы пропустить все страницы пользовательских ошибок в целом.

    Сделайте копию файла перед вызовом wget. (Кажется, не существует способа сказать wget для отсоединения и воссоздания, а не для клонирования файла.)

     cp -p foo foo.prev wget http://example.com/foo if ! [ -S "foo" ]; then mv -f foo.prev foo; done 
    Linux и Unix - лучшая ОС в мире.