Arquivos recursivamente md5 em comparação com o arquivo .md5 armazenado

2

Qual é o melhor caminho para MD5 3200 arquivos em 167 diretórios usando md5sum onde todos os hashes são comparados a um arquivo .md5 que já é criado em cada diretório que contém os arquivos a serem somados. Eu também precisaria criar um registro de quais arquivos falham na verificação de soma para que eu possa tentar corrigir o problema.

Editar :: Se possível, fazer isso de uma maneira que aproveite os núcleos de 8 cpu (2x quad core) seria uma vantagem, pois eu irei mastigar 1.1 tb de arquivos. / p>

Na maior parte, a estrutura de diretórios é:

Root ->
        Subdir1 ->
                 File1
                 File2
                 File3
                 hashes.md5
        Subdir2 ->
                 File1
                 File2
                 File3
                 hashes.md5

Embora alguns sub-diretórios possam ter sub-diretórios adicionais para serem transversais da seguinte forma:

Root ->
        Subdir1 ->
                 File1
                 File2
                 File3
                 hashes.md5
        Subdir2 ->
                 Sub-Subdir1 ->
                               File1
                               File2
                               File3
                               hashes.md5
                 File1
                 File2
                 File3
                 hashes.md5

Qual é a melhor maneira de atravessar todos os diretórios a partir de um diretório raiz, procurando arquivos * .md5 e, em seguida, verificando o conteúdo da pasta em comparação com os hashes armazenados no arquivo.

Além disso, se for importante, os hashes são armazenados nesse formato dentro dos arquivos * .md5:

5a243a798037cbc7b458326a1e8ff263 *File1
1c3a6609e413bb32512e263f821b2dc4 *File2
49615cf8bf8f23680305e964f6d53f85 *File3
6eb73fa3065fbc220ac9569a98b84c79 *File4
d4f103bf06902e4dbeb67b6975ae08b8 *File5
26b5053e374d1d7262c528eca6426a3a *File6
f6ff252801fbeac6274e00b36a2b9725 *File7
22812abfa9a47131ee8e548747c0903b *File8
b19cd459aaaf07a0c69cda7931827338 *File9

Os nomes dos arquivos também podem ter espaços como "* Arquivo - alguns outros detalhes.ext"

    
por user419541 15.12.2015 / 02:08

2 respostas

3

Você poderia usar encontrar, por exemplo:

find . -name hashes.md5 -execdir md5sum --quiet --check hashes.md5 \; > logfile

Isto irá procurar por arquivos chamados "hashes.md5", então vá para o diretório do arquivo encontrado e execute o md5sum. O --quiet diz ao md5sum para não imprimir nada se um arquivo estiver OK, somente se não for

Edit: Não sei se o find vai tirar vantagem de 8 cpus, provavelmente não. Você pode lançar várias instâncias de pesquisa, cada uma trabalhando em um conjunto diferente de subpastas.

    
por 15.12.2015 / 02:30
0

Você pode usar o programa hashdeep ( link ) que suporta todos os recursos desejados e muito mais:

  • hashes adicionais (sha1, sha256, tiger, whirlpool)

  • mais de 1 hash por arquivo

  • três modos correspondentes (modo de auditoria (todos os hashes devem corresponder, nenhum arquivo novo nem ausente), correspondência positiva, correspondência negativa)

  • multi-threading

por 30.04.2017 / 17:27