32 votes

Calculer la somme de contrôle MD5 d'un répertoire

Je cherche un moyen rapide de comparer le contenu d'un répertoire. Est-il possible de faire un md5sum (ou une somme de contrôle équivalente) d'un répertoire entier ?

Utiliser Ubuntu Linux

42voto

Shane Madden Points 112034

Bien sûr. md5sum directory/*

Si vous avez besoin de quelque chose d'un peu plus flexible (par exemple, pour la récursion de répertoire ou la comparaison de hachage), essayez md5deep.

apt-get install md5deep
md5deep -r directory

Pour comparer une structure de répertoire, vous pouvez lui donner une liste de hachages à comparer :

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

Cela affichera tous les fichiers du répertoire 2 qui ne correspondent pas au répertoire 1.

Cela ne montrera pas les fichiers qui ont été supprimés du répertoire1 ou les fichiers qui ont été ajoutés au répertoire2.

29voto

JakePaulus Points 2327

Si vous souhaitez voir ce qui est différent (le cas échéant) entre deux répertoires, rsync est la solution idéale.

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

Cela permettra de lister tous les fichiers qui sont différents.

14voto

Hans Kesting Points 101

Je pense avoir déjà répondu à cette question avec cette réponse :

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

donne : b1a5b654afee985d5daccd42d41e19b2877d66b1

l'idée est de hacher tous les fichiers, de découper les hachages un par ligne, de les trier et de les hacher pour obtenir un seul hachage. cela ne dépend pas des noms des fichiers.

5voto

Hubert Kario Points 6321

Die cfv est très utile, non seulement il peut vérifier et créer des sommes de contrôle MD5, mais il peut aussi faire CRC32, sha1, torrent, par, par2.

pour créer un fichier de somme de contrôle CRC32 pour tous les fichiers du répertoire courant :

cfv -C

pour créer un fichier de somme de contrôle MD5 pour tous les fichiers du répertoire courant :

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

Pour créer un fichier de somme de contrôle distinct pour chaque sous-répertoire :

cfv -C -r

Pour créer un "super" fichier de somme de contrôle contenant les fichiers de tous les sous-répertoires :

cfv -C -rr

4voto

Rohan Talip Points 121

J'ai utilisé hashdeep, comme expliqué dans cette réponse de askubuntu : Vérifier l'exactitude des fichiers copiés :

Pour calculer les sommes de contrôle :

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

Pour vérifier et lister les différences :

 $ 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

Cette méthode présente l'avantage, par rapport à md5deep, d'afficher les fichiers renommés (déplacés), ajoutés et supprimés, et d'éviter le problème des fichiers de longueur 0 signalé au bas de la page http://www.meridiandiscovery.com/how-to/validating-copy-results-using-md5deep .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X