Verifique o MD5 de um cabeçalho de arquivo hospedado em um servidor da web

0

Estou escrevendo um script para baixar periodicamente um arquivo de configuração usando cURL. O problema é o seguinte: o arquivo tem cerca de 110 MB e sempre tem o mesmo nome de arquivo.

Eu posso fazer o download do arquivo, verificar seu hash (md5, sha1) e compará-lo a um arquivo baixado anteriormente:

  • se o hash é igual, o arquivo é o mesmo e não foi atualizado: neste caso, eu fiz o download sem motivo.
  • se o hash for diferente, o arquivo no servidor da web será uma nova versão: nesse caso, eu uso esse arquivo e atualizo para a nova versão.

Eu gostaria de executar este script a cada meia hora, e baixar 110MB por nada (mesma versão do arquivo) me incomoda. Existe uma maneira de baixar os primeiros 500KB usando o curl na linha de comando?

Minha solução atual é comparar o tamanho do arquivo do cabeçalho HTTP, mas eu ainda gostaria de ter uma resposta sobre a pergunta acima e saber se isso é viável. Muito obrigado.

curl -sI 'http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H 'Host: domain.tld' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br' -H 'DNT: 1' -H 'Connection: keep-alive' | grep 'Content-Length:'

    
por Florian Bidabe 17.06.2016 / 09:05

1 resposta

1

Você pode confiar nas datas de modificação do seu arquivo no cliente e no servidor? Nesse caso, você pode usar a funcionalidade "GET condicional" / "If-Modified-Since" do HTTP com a opção curl -z . Não há necessidade de baixar nada. Esta é uma funcionalidade incorporada do protocolo HTTP que tem sido usado em todos os lugares desde o início.

Não é necessário fazer download de nada se a data de modificação do arquivo no servidor não for mais recente que a do arquivo que você baixou da última vez.

Para o seu script bash , considere usar stat(1) para encontrar o horário de modificação do arquivo local, para que você possa alimentar essa informação em curl -z … .

    
por 17.06.2016 / 10:23