Ich suche nach einer schnellen Möglichkeit, den Inhalt eines Verzeichnisses zu vergleichen. Ist es möglich, eine MD5-Summe (oder eine äquivalente Prüfsumme) eines gesamten Verzeichnisses zu erstellen?
Verwenden von Ubuntu Linux
Ich suche nach einer schnellen Möglichkeit, den Inhalt eines Verzeichnisses zu vergleichen. Ist es möglich, eine MD5-Summe (oder eine äquivalente Prüfsumme) eines gesamten Verzeichnisses zu erstellen?
Verwenden von Ubuntu Linux
Antworten:
Sicher - md5sum directory/*
Wenn Sie etwas Flexibleres benötigen (z. B. zur Verzeichnisrekursion oder zum Hash-Vergleich), versuchen Sie es mit md5deep.
apt-get install md5deep
md5deep -r directory
Um eine Verzeichnisstruktur zu vergleichen, können Sie ihr eine Liste von Hashes geben, mit denen verglichen werden soll:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Dadurch werden alle Dateien in Verzeichnis2 ausgegeben, die nicht mit Verzeichnis1 übereinstimmen.
Hiermit werden keine Dateien angezeigt, die aus Verzeichnis1 entfernt wurden, oder Dateien, die zu Verzeichnis2 hinzugefügt wurden.
-j0
die Multithreading deaktiviert (siehe Manpage).
md5deep
mit sudo apt-get install md5deep
on installiert, Ubuntu 16.04
aber als ich versuchte, die Manpage zu lesen, wurde mir mitgeteilt, dass> kein manueller Eintrag für md5deep
Wenn Sie sehen möchten, was sich (wenn überhaupt) zwischen zwei Verzeichnissen unterscheidet, ist rsync eine gute Lösung.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Dies listet alle Dateien auf, die unterschiedlich sind.
diff -qr /source/directory/ /destination/directory/
würde auch Dateien anzeigen, die sich unterscheiden.
username@hostname:/destination/directory
Ich glaube, ich habe diese Frage schon einmal mit folgender Antwort beantwortet:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
gibt: b1a5b654afee985d5daccd42d41e19b2877d66b1
Die Idee ist, dass Sie alle Dateien hashen und die Hashes eine pro Zeile ausschneiden, sie sortieren und hashen, was einen einzelnen Hash ergibt. Dies hängt nicht von den Namen der Dateien ab.
Die cfv- Anwendung ist sehr nützlich, sie kann nicht nur MD5-Prüfsummen prüfen und erstellen, sondern auch CRC32, sha1, torrent, par, par2.
So erstellen Sie eine CRC32-Prüfsummendatei für alle Dateien im aktuellen Verzeichnis:
cfv -C
So erstellen Sie eine MD5-Prüfsummendatei für alle Dateien im aktuellen Verzeichnis:
cfv -C -t md5 -f "aktuelles Verzeichnis.md5sums"
So erstellen Sie eine separate Prüfsummendatei für jedes Unterverzeichnis:
cfv -C -r
So erstellen Sie eine "Super" -Prüfsummendatei, die Dateien in allen Unterverzeichnissen enthält:
cfv -C -rr
Ich habe hashdeep verwendet, wie in dieser askubuntu-Antwort erklärt: Überprüfe die Korrektheit der kopierten Dateien :
So berechnen Sie die Prüfsummen:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
So überprüfen Sie die Unterschiede und listen sie auf:
$ 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
Dies hat gegenüber md5deep den Vorteil, dass umbenannte (verschobene), hinzugefügte und entfernte Dateien angezeigt werden und das Problem mit Dateien der Länge 0 vermieden wird, das am Ende von http://www.meridiandiscovery.com/how- zu / validieren-kopie-ergebnisse-mit-md5deep .
Dies funktionierte für mich: (Führen Sie es aus, während Sie sich in dem Verzeichnis befinden, das Sie interessiert)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Sie können MD5-Summen für jede einzelne Datei erstellen, diese Prüfsummen alphabetisch sortieren und sie haben (mit oder ohne Zeilenvorschub). Da MD5 kryptografisch ist, sollte es problemlos mit Hashes von Hashes funktionieren.
Es sollte eine bestimmte Reihenfolge für die Dinge geben, sonst erhalten Sie unterschiedliche Ergebnisse für gleiche Verzeichnisse.
Und Sie sollten bedenken , dass einige Datei zu einem Verzeichnis hinzugefügt wird vollständig das Ergebnis ändern, auch wenn es nur eine war .directory
der .DS_Store
Datei.
Nehmen wir an, Sie möchten in einem bestimmten Fall einige Dateien von Verzeichnis1 nach Verzeichnis2 kopieren und anschließend eine erfolgreiche Kopie mithilfe eines MD5-Vergleichs überprüfen.
Zuerst. cd to directory1 und tippe:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
Dadurch wird eine Referenzdatei erstellt, die eine MD5-Summe für jede Datei in Verzeichnis1 enthält. Sobald dies erledigt ist, müssen Sie nur noch cd to directory2 und Folgendes eingeben:
md5sum -c ~/Desktop/md5sum.txt
Das Programm md5sum ruft jeden Pfad aus der Datei md5sum.txt ab, berechnet die md5sum dieser Datei im Zielordner und vergleicht sie dann mit der in der Datei gespeicherten Summe.
Nach Abschluss des Vorgangs erhalten Sie eine Zusammenfassung wie "So und so viele Dateien stimmen nicht überein" oder ähnliches.
Ich musste die Integrität von Sicherungen / Spiegeln überprüfen, die eine große Anzahl von Dateien enthalten, und schrieb schließlich ein Befehlszeilenprogramm namens MassHash. Es ist in Python geschrieben. Ein GTK + Launcher ist ebenfalls verfügbar. Vielleicht möchten Sie es ausprobieren ...