Quero baixar uma cópia de um arquivo de imagem grande (+20 MB) sempre que ele for alterado. Mas sem baixá-lo a cada X segundos e compará-lo com a versão antiga que tenho, como saberei se a imagem mudou ou não? Caso contrário, consumiria muita largura de banda e seria lento.
Existe uma maneira de determinar o tamanho da imagem antes de baixá-la completamente? Então, quando o tamanho mudou, isso significa que a imagem também mudou.
Podemos comparar duas imagens sem baixá-las (ou apenas baixando os primeiros kilobytes)? Em outras palavras, as imagens contêm informações de tamanho ou valor de hash? Ou algo assim.
Responder1
Wget permite que você baixe apenas quando o arquivo do lado do servidor for mais recente:
When running Wget with -N, with or without -r or -p, the decision
as to whether or not to download a newer copy of a file depends on
the local and remote timestamp and size of the file. -nc may not
be specified at the same time as -N.
Responder2
Abordagem 1:O servidor de arquivos pode permitir acesso ao diretório. Tente acessar e analisar a saída do diretório pai. Exemplo:https://www.kernel.org/pub/site/
Abordagem 2:No código, recupere o campo de cabeçalho "content-length" para obter o tamanho do arquivo quepoderiaser um indicador de que o arquivo foi alterado. Exemplo:https://stackoverflow.com/questions/2983073/how-to-know-the-size-of-a-file-before-downloading-it/12271781#12271781
Abordagem 3:Peça ao administrador do servidor para fornecer uma soma de verificação que você possa baixar, uma notificação de que um novo arquivo está disponível ou alguma outra forma de acesso ao shell/diretório.