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
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
Respostas:
Certo - 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 md5deep.
apt-get install md5deep
md5deep -r directory
Para comparar uma estrutura de diretórios, você pode fornecer uma lista de hashes para comparar:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Isso produzirá todos os arquivos no diretório2 que não correspondem ao diretório1.
Isso não mostra os arquivos que foram removidos do diretório1 ou os arquivos que foram adicionados ao diretório2.
-j0
que desativa o multithreading (consulte a página de manual).
md5deep
com sudo apt-get install md5deep
on Ubuntu 16.04
mas quando tentei ler a página de homem ele me diz que> nenhuma entrada manual para md5deep
Se você gostaria de ver o que há de diferente (se houver) entre dois diretórios, o rsync seria uma boa opção.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Isso listará todos os arquivos diferentes.
diff -qr /source/directory/ /destination/directory/
também mostraria arquivos que diferem.
username@hostname:/destination/directory
Eu acho que respondi a este antes 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 cortem os hashes um por linha, classifique-os e o hash produzindo um único hash. isso não depende dos nomes dos arquivos.
O aplicativo cfv é bastante útil, não apenas pode verificar e criar somas de verificação MD5, mas 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 "diretório atual.md5sums"
Para criar um arquivo de soma de verificação separado para cada subdiretório:
cfv -C -r
Para criar um arquivo "super" de soma de verificação contendo arquivos em todos os subdiretórios:
cfv -C -rr
Eu usei o hashdeep, conforme explicado nesta resposta do askubuntu: Verifique a correçã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
Isso tem uma vantagem sobre o md5deep, pois ele mostra arquivos renomeados (movidos), adicionados e removidos, além de evitar o problema com arquivos de tamanho 0, apontados na parte inferior de http://www.meridiandiscovery.com/how- para / validating-copy-results-using-md5deep .
Isso funcionou para mim: (execute-o no diretório em que você está interessado)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Você pode criar somas MD5 de todos os arquivos, ordenar essas somas de verificação em ordem alfabética e tê-las (com ou sem novas linhas). Como o MD5 é criptográfico, deve funcionar bem com hashes de hashes.
Deve haver uma certa ordem para as coisas, caso contrário, você obterá resultados diferentes para dirs iguais.
E você deve considerar que a adição de algum arquivo para um dir vai mudar completamente o resultado, mesmo que fosse apenas um .directory
de .DS_Store
arquivo.
Como um caso específico, digamos que você deseja copiar alguns arquivos do diretório1 para o diretório2 e, em seguida, verifique 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. Feito isso, tudo o que você precisa fazer é cd para directory2 e digite:
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 o compara com a soma armazenada no arquivo.
Após a conclusão do processo, você obterá um resumo como 'Então, e tantos arquivos não corresponderam' ou algo parecido.
Eu precisava verificar a integridade dos 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 lançador GTK + também está disponível. Você pode conferir ...