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

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

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

Posso baixar o arquivo, verificar seu hash (md5, sha1) e compará-lo com um arquivo baixado anteriormente:

  • se o hash for igual, o arquivo é o mesmo e não foi atualizado: neste caso baixei sem motivo.
  • se o hash for diferente, o arquivo no servidor web é uma nova versão: neste caso, utilizo este arquivo e atualizo para a nova versão.

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

Minha solução atual é comparar o tamanho do arquivo do cabeçalho HTTP, mas ainda gostaria de ter uma resposta para 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: domínio.tld' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) como Gecko' -H 'Aceitar: text/html,application/xhtml+xml ,aplicativo/xml;q=0,9,/;q=0,8' -H 'Aceitar idioma: en-US,en;q=0,5' -H 'Aceitar codificação: gzip, deflate, br' -H 'DNT: 1' -H 'Conexão: keep-alive ' | grep 'Comprimento do conteúdo:'

Responder1

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

Não há necessidade de baixar 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 bashscript, considere usar stat(1)para encontrar o horário do mod do arquivo local, para que você possa inserir essas informações no arquivo curl -z ….

informação relacionada