Melhora o tempo de execução para verificação md5sum recursiva?

0

Esta verificação recursiva de md5sum para 40000 itens de 11.8 GB leva 2 minutos:

ret=$(find "${target}"/ -name ".md5sum" -size +0 | while read aFile; do cd "${aFile%/*}"; md5sum -c ".md5sum"; done | grep -v "OK";)

Podem ser feitas melhorias óbvias na velocidade, que eu não notei?

    
por user77115 04.09.2014 / 11:57

1 resposta

3

Não realmente.

A menos que você decida desistir completamente da verificação se size + timestamp corresponder, há pouco a ser otimizado se as somas de verificação realmente coincidirem; os arquivos serão todos idênticos, mas para verificar isso, você realmente precisa ler tudo e isso leva tempo.

Você pode reduzir o número de md5sum de chamadas para uma única, criando um arquivo global MD5SUMS que contenha todos os arquivos. No entanto, como o gargalo será o disco I / O, não haverá muita diferença na velocidade ...

Você pode otimizar um pouco se os arquivos forem realmente alterados.

Se o tamanho dos arquivos mudar, você também pode gravar os tamanhos dos arquivos e não precisa verificar o md5sum, porque um tamanho diferente significa automaticamente um md5sum alterado.

Em vez de checksums de arquivos inteiros, você poderia fazer os baseados em fragmentos, para que você possa parar de verificar as diferenças em um determinado arquivo se já houver uma alteração no início. Então, ao invés de ler o arquivo inteiro, você só precisa ler até o primeiro pedaço alterado.

    
por 04.09.2014 / 13:02