Je cherche un moyen rapide de comparer le contenu du répertoire. Est-il possible de faire une somme md5 (ou une somme de contrôle équivalente) d'un répertoire entier?
Utiliser Ubuntu Linux
Je cherche un moyen rapide de comparer le contenu du répertoire. Est-il possible de faire une somme md5 (ou une somme de contrôle équivalente) d'un répertoire entier?
Utiliser Ubuntu Linux
Réponses:
Sûr - md5sum directory/*
Si vous avez besoin de quelque chose d'un peu plus flexible (par exemple, pour la récursivité des répertoires ou la comparaison de hachage), essayez md5deep.
apt-get install md5deep
md5deep -r directory
Pour comparer une structure de répertoires, vous pouvez lui donner une liste de hachages à comparer:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Cela générera tous les fichiers du répertoire2 qui ne correspondent pas au répertoire1.
Cela n'affichera pas les fichiers qui ont été supprimés du répertoire1 ou les fichiers qui ont été ajoutés au répertoire2.
-j0
ce qui désactive le multithreading (voir la page de manuel).
md5deep
avec sudo apt-get install md5deep
sur Ubuntu 16.04
mais quand j'ai essayé de lire la page de manuel , il me dit que> Pas de saisie manuelle pour md5deep
Si vous souhaitez voir ce qui est différent (le cas échéant) entre deux répertoires, rsync serait un bon choix.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Cela répertorie tous les fichiers différents.
diff -qr /source/directory/ /destination/directory/
afficherait également des fichiers différents.
username@hostname:/destination/directory
je pense que j'ai répondu à celui-ci avant 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 couper les hachages un par ligne, de les trier et de hacher ce qui donne un seul hachage. cela ne dépend pas du nom des fichiers.
L' application cfv est très utile, non seulement elle peut vérifier et créer des sommes de contrôle MD5, mais elle peut également faire CRC32, sha1, torrent, par, par2.
pour créer un fichier de somme de contrôle CRC32 pour tous les fichiers du répertoire actuel:
cfv -C
pour créer un fichier de somme de contrôle MD5 pour tous les fichiers du répertoire actuel:
cfv -C -t md5 -f "répertoire courant.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 des fichiers dans tous les sous-répertoires:
cfv -C -rr
J'ai utilisé hashdeep, comme expliqué dans cette réponse askubuntu: Vérifiez l'exactitude des fichiers copiés :
Pour calculer les sommes de contrôle:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Pour vérifier et répertorier 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
Cela a un avantage sur md5deep en ce qu'il montrera les fichiers renommés (déplacés), ajoutés et supprimés, ainsi que d'éviter le problème avec les fichiers de longueur 0 indiqué au bas de http://www.meridiandiscovery.com/how- à / validating-copy-results-using-md5deep .
Cela a fonctionné pour moi: (exécutez-le dans le répertoire qui vous intéresse)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Vous pouvez créer des sommes MD5 pour chaque fichier, les classer par ordre alphabétique et les avoir (avec ou sans retour à la ligne). Étant donné que MD5 est cryptographique, il devrait fonctionner correctement avec des hachages de hachages.
Il devrait y avoir un certain ordre dans les choses, sinon vous obtiendrez des résultats différents pour des dires égaux.
Et vous devriez considérer que l' ajout d'un certain fichier à un répertoire va complètement changer le résultat, même si elle était juste un .directory
de .DS_Store
fichier.
Dans un cas spécifique, disons que vous souhaitez copier certains fichiers du répertoire1 vers le répertoire2, puis vous souhaitez vérifier une copie réussie à l'aide d'une comparaison md5.
Première. cd dans directory1 et tapez:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
ce qui créera un fichier de référence contenant une somme md5 pour chaque fichier du répertoire1. Une fois cela fait, il vous suffit de cd dans le répertoire2 et de taper:
md5sum -c ~/Desktop/md5sum.txt
Le programme md5sum récupère chaque chemin du fichier md5sum.txt, calcule la somme md5 de ce fichier dans le dossier de destination, puis la compare avec la somme qu'il a stockée dans le fichier.
Une fois le processus terminé, vous obtiendrez un récapitulatif tel que «Si et tant de fichiers ne correspondent pas» ou quelque chose comme ça.
J'ai eu besoin de vérifier l'intégrité des sauvegardes / miroirs qui contiennent un grand nombre de fichiers et j'ai fini par écrire un programme en ligne de commande appelé MassHash. C'est écrit en Python. Un lanceur GTK + est également disponible. Tu voudras peut-être vérifier...