Não confie nas somas MD5.
As somas MD5 não são uma maneira confiável de verificar se há duplicatas; elas são apenas uma maneira de verificar se há diferenças.
Use MD5s para encontrar possíveis duplicatas candidatas e, em seguida, para cada par que compartilha um MD5
- Abre os dois arquivos
- Procura avançar nesses arquivos até que um seja diferente.
Vendo que estou sendo criticado por pessoas que adotam abordagens ingênuas para arquivar Identidade duplicada, se você confiar inteiramente em um algoritmo de hash, pelo amor de Deus, use algo mais difícil como SHA256 ou SHA512, pelo menos reduzirá a probabilidade de um grau razoável, tendo mais bits verificados. O MD5 é extremamente fraco para condições de colisão.
Também recomendo que as pessoas leiam as listas de discussão aqui intituladas 'verificação de arquivo': http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Se você disser "O MD5 pode identificar todos os arquivos exclusivamente", você terá um erro de lógica.
Dado um intervalo de valores, de comprimentos variados, de 40.000 bytes a 100.000.000.000 bytes, o número total de combinações disponíveis para esse intervalo excede em muito o número possível de valores representados pelo MD5, pesando apenas 128 bits de comprimento.
Representa 2 ^ 100.000.000.000 combinações com apenas 2 ^ 128 combinações? Eu não acho isso provável.
O caminho menos ingênuo
A maneira menos ingênua e a maneira mais rápida de eliminar duplicatas é a seguinte.
- Por tamanho : arquivos com tamanhos diferentes não podem ser idênticos. Isso leva pouco tempo, pois nem precisa abrir o arquivo.
- Por MD5 : Arquivos com diferentes valores MD5 / Sha não podem ser idênticos. Isso leva um pouco mais de tempo, pois é necessário ler todos os bytes no arquivo e executar cálculos neles, mas torna mais rápidas as comparações.
- Falhando nas diferenças acima : Execute uma comparação de bytes por bytes dos arquivos. Este é um teste lento para executar, e é por isso que resta até que todos os outros fatores eliminadores tenham sido considerados.
Fdupes faz isso. E você deve usar um software que use os mesmos critérios.