Configure o wget para não estragar bons dados com dados vazios

2

Eu tenho atualmente uma configuração onde eu tenho um servidor de emergência que agendado por arquivos do meu servidor principal usando wget. Se tudo correr bem, quero que o wget destrua o antigo arquivo em cache. No entanto, se a solicitação retornar 404 ou algo der errado, quando os dados não puderem ser recuperados (por exemplo, meu servidor principal ficar inativo), não quero que os dados em cache sejam reprovados. Eu tentei usar -N, que acerta corretamente os dados se uma nova versão estiver disponível. No entanto, se houver um 404, isso prejudica os dados com arquivos de 0 byte.

    
por Kyle 23.03.2011 / 21:53

2 respostas

1

Se você puder modificar a configuração do seu servidor da web ou tiver permissão para ter o .htaccess, poderá configurar páginas de erro personalizadas. Por exemplo, assumindo o apache como servidor da Web, crie uma página de erro /var/www/error-pages/404-error.html e adicione o seguinte à sua seção .htaccess ou vhosts.

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

Juntamente com a diretiva de alias, você pode usar as mesmas páginas de erro para vários vhosts se tiver mais de um. Isso por si só deve ajudar a não prejudicar, mas você também pode adicionar -X error-pages aos seus parâmetros wget para ignorar todas as páginas de erro personalizadas em geral.

    
por 24.03.2011 / 21:49
1

Faça uma cópia do arquivo antes de chamar o wget. (Não parece haver uma maneira de dizer ao wget para desvincular e recriar ao invés de destruir o arquivo.)

cp -p foo foo.prev
wget http://example.com/foo
if ! [ -S "foo" ]; then mv -f foo.prev foo; done
    
por 23.03.2011 / 22:42

Tags