Calcula a soma de verificação MD5 de um diretório

28

Estou procurando uma maneira rápida de comparar o conteúdo do diretório. É possível fazer um md5sum (ou soma de verificação equivalente) de um diretório inteiro?

Usando o Ubuntu Linux

    
por pufferfish 20.08.2011 / 18:54

9 respostas

36

Claro - md5sum directory/*

Se você precisar de algo um pouco mais flexível (por exemplo, para recursão de diretório ou comparação de hash), tente o md5deep.

apt-get install md5deep
md5deep -r directory

Para comparar uma estrutura de diretórios, você pode fornecer uma lista de hashes para comparação:

md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2

Isto irá mostrar todos os arquivos no diretório2 que não correspondem ao diretório1.

Isto não mostrará arquivos que foram removidos do diretório1 ou arquivos que foram adicionados ao diretório2.

    
por 20.08.2011 / 19:01
26

Se você gostaria de ver o que é diferente (se houver) entre dois diretórios, o rsync seria um bom ajuste.

rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory

Isso listará todos os arquivos que forem diferentes.

    
por 20.08.2011 / 19:21
10

acho que já respondi a este com esta resposta:

find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum

dá: b1a5b654afee985d5daccd42d41e19b2877d66b1

a idéia é que você hash todos os arquivos recortar os hashes um por linha, classificá-los e hash que produzindo um único hash. isso não depende dos nomes dos arquivos.

    
por 21.08.2011 / 15:22
5

A aplicação cfv é bastante útil, não só pode verificar e criar checksums MD5, como também pode fazer CRC32, sha1, torrent, par, par2.

para criar um arquivo de soma de verificação CRC32 para todos os arquivos no diretório atual:

cfv -C

para criar um arquivo de soma de verificação MD5 para todos os arquivos no diretório atual:

cfv -C -t md5 -f "current directory.md5sums"

Para criar um arquivo de soma de verificação separado para cada subdiretório:

cfv -C -r

Para criar um arquivo de soma de verificação "super" contendo arquivos em todos os subdiretórios:

cfv -C -rr
    
por 20.08.2011 / 23:37
4

Eu usei o hashdeep, como explicado nesta resposta do askubuntu: Verifique a exatidão dos arquivos copiados :

Para calcular as somas de verificação:

 $ cd <directory1>
 $ hashdeep -rlc md5 . > ~/hashOutput.txt

Para verificar e listar as diferenças:

 $ cd <directory2>
 $ hashdeep -ravvl -k ~/hashOutput.txt .
 hashdeep: Audit passed
    Input files examined: 0
   Known files expecting: 0
           Files matched: 13770
 Files partially matched: 0
             Files moved: 0
         New files found: 0
   Known files not found: 0

Isto tem uma vantagem sobre o md5deep em que ele mostrará arquivos renomeados (movidos), adicionados e removidos, assim como evitar o problema com arquivos de comprimento 0 apontados na parte inferior de link .

    
por 31.01.2015 / 20:19
3

Isso funcionou para mim: (execute-o no diretório em que você está interessado)

md5deep -rl . | awk '{print $1}' | sort -n | md5sum
    
por 16.12.2012 / 02:53
1

Você pode criar somas MD5 de cada arquivo, pedir essas somas de ordem alfabeticamente e tê-las (com ou sem novas linhas). Como o MD5 é criptográfico, ele deve funcionar bem com hashes de hashes.

Deve haver uma certa ordem para as coisas, caso contrário, você obterá resultados diferentes para diretivas iguais.

E você deve considerar que adicionar um arquivo a um diretório alterará completamente o resultado, mesmo se fosse apenas um arquivo .directory de .DS_Store .

    
por 20.08.2011 / 23:20
1

Como um caso específico, digamos que você queira copiar alguns arquivos do diretório1 para o diretório2 e, em seguida, deseja verificar uma cópia bem-sucedida usando uma comparação md5.

Primeiro. cd para directory1 e digite:

find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt

que criará um arquivo de referência contendo uma soma md5 para cada arquivo no diretório1. Uma vez feito isso, tudo o que você precisa fazer é cd para directory2 e digitar:

md5sum -c ~/Desktop/md5sum.txt

O programa md5sum busca cada caminho do arquivo md5sum.txt, calcula o md5sum desse arquivo na pasta de destino e compara-o com a soma que ele armazenou no arquivo.

Depois que o processo estiver concluído, você receberá um resumo como "Assim, e muitos arquivos não corresponderam" ou algo assim.

    
por 12.02.2012 / 13:02
1

Eu tive a necessidade de verificar a integridade de backups / espelhos que contêm um grande número de arquivos e acabei escrevendo um programa de linha de comando chamado MassHash. Está escrito em Python. Um GTK + Launcher também está disponível. Você pode querer dar uma olhada ...

link

    
por 29.07.2012 / 01:39