É necessário validar a integridade do arquivo quando o curl foi bem-sucedido

2

Eu tenho um monte de arquivos no S3, e eu preciso baixar e atualizá-los via linha de comando (BASH) em vários dispositivos.

O que eu faço (a partir de agora):

  1. Solicite o cabeçalho do arquivo com -I e extraia o campo ETag
  2. Verifique o md5sum do arquivo local
  3. Se eles não corresponderem (ou o arquivo não existir localmente ainda), faço o download do arquivo com -f para obter um status de saída confiável
  4. Verifique $? de ondulação
  5. Se for 0, comparo o md5sum esperado com o md5sum do arquivo baixado

O que eu gostaria de fazer:

  1. Se o arquivo existir localmente, obtenha md5sum dele
  2. Download do arquivo com --header 'If-None-Match:<md5sum of local file>
  3. Se o status de saída for 0 - > feito!

Minha pergunta: Posso confiar no status de saída de cachos? Ou seja quando o status de saída é 0, o arquivo baixado é válido (supõe que meu sistema de arquivos não esteja corrompido nesse meio tempo)?

    
por dabai 11.06.2014 / 18:30

1 resposta

0

Desculpe o representante não é suficiente para comentar, mas você pode querer olhar para isso e explicar que o etag não é o que você espera para qualquer arquivo que tenha sido um upload em várias partes. link

Tanto quanto você deve verificar o arquivo, então eu diria que sim, se você quer ter 100% de certeza. Só porque você pode ter obtido todos os bits corretos através da rede não significa que ele foi gravado no seu disco rígido corretamente. Nem tudo é tão crítico que você precisa verificar, mas para fins de arquivamento eu sempre verifico e você ficaria surpreso com quantas vezes eu tenho que voltar a ajustar a maneira como os arquivos chegam ao seu destino final, porque em discos ruins, etc. >     

por 18.06.2014 / 04:38

Tags