Ich möchte eine md5sum
(oder eine ähnliche Berechnung) eines Ordners finden, ohne ihn in ein Archiv zu komprimieren.
Zum Beispiel, wenn MyFolder
wir in dem Ordner die Dateien 1.txt
haben 2.txt
und 3.txt
enthalten:
1.txt
Der Text in 1.txt
2.txt
Der Text in 2.txt
3.txt
Der Text in 3.txt
Wie kann ich die Berechnung md5sum
dieser ganzen MyFolder
? Gibt es einen Weg? Ich möchte dies verwenden, um zu überprüfen, ob zwei Ordner den gleichen Inhalt haben.
Dies kann verwendet werden, um zu überprüfen, ob zwei CDs oder Ordner gleich sind. Ich hätte gerne einen einfachen Weg, es zu tun.
files
checksum
verification
GarouDan
quelle
quelle
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
Vielen Dank.-o
Option verwenden, um Dateitypen zu behandeln.Wenn Sie es nicht archivieren möchten, können Sie vielleicht so etwas tun
Möglicherweise müssen Sie die
find
Befehle anpassen , um genauer zu sein.BEARBEITEN Sie können
-exec
Ihrem Suchaufruf hinzufügen , um den Inhalt von Dateien zu vergleichen. Ähnliches:Denken Sie daran, dass Sie dies möglicherweise anpassen möchten.
quelle
Eine Möglichkeit zum Testen könnte darin bestehen, eine md5sum basierend auf der Verkettung aller Dateien im Ordner und seinen Unterordnern zu generieren. Beachten Sie, dass dies auch erfordert, dass die Dateien dieselben Namen haben (da sie in derselben Sortierreihenfolge vorliegen müssen). Der folgende Code sollte funktionieren:
Wenn Sie sich wirklich für die Dateinamen usw. interessieren, können Sie eine Schleife verwenden, um zu vergleichen, was sich in
${_files_in_old_dir}
und befindet${_files_in_new_dir}
. Dies sollte in den meisten Fällen funktionieren (es überprüft zumindest die Anzahl der Dateien im Verzeichnis und seinen Unterverzeichnissen).quelle
globstar
. Was ist der Fehler?Ich habe festgestellt, dass der ursprüngliche Beitrag ziemlich alt ist. Ich denke jedoch, dass diese Informationen für diejenigen, die nach einer Lösung suchen, um zu überprüfen, ob die Dateien korrekt kopiert wurden, immer noch wertvoll sein können. Rsync ist möglicherweise die beste Methode zum Kopieren von Daten. Die in diesem Thread angegebenen Antworten sind gut. Für diejenigen, die noch keine Erfahrung mit Linux haben, werde ich versuchen, eine detailliertere Erklärung zu geben.
Szenario: Sie haben gerade Daten von einer Festplatte auf eine andere kopiert, mit vielen Unterverzeichnissen und Dateien. Sie möchten überprüfen, ob alle Daten korrekt kopiert wurden.
Überprüfen Sie zunächst, ob md5deep installiert ist, indem Sie den Befehl ausgeben
md5deep -v
.Wenn Sie die Meldung "Befehl nicht gefunden" erhalten, installieren Sie md5deep by
apt-get install md5deep
.Es wird davon ausgegangen, dass Sie nur mit regulären Dateien arbeiten möchten. Wenn Sie sich mit anderen Dateitypen befassen möchten, lesen Sie das Flag -o im Handbuch md5deep. (
man md5deep
)Jetzt können Sie loslegen, und wir gehen davon aus, dass Sie Dateien von
/mnt/orginal
nach kopiert/mnt/backup
haben. Ersetzen Sie diese durch die von Ihnen verwendeten Verzeichnisse.Wechseln Sie zuerst in das Quellverzeichnis. Dies ist die Originalquelle für die Dateien, die Sie kopiert oder gesichert haben:
cd /mnt/orginal
Machen Sie dann eine Prüfsumme für jede Datei:
md5deep -rel -o f . >> /tmp/checksums.md5
Dieser Befehl erklärte:
-r
aktiviert den rekursiven Modus-e
Zeigt die Fortschrittsanzeige an-l
aktiviert relative Dateipfade.-o f
Arbeiten Sie nur mit normalen Dateien (blockieren Sie keine Geräte, Named Pipes usw.).
Weist md5deep an, im aktuellen Verzeichnis zu starten.>> /tmp/checksums.md5
Weist md5deep an, alle Ausgaben an umzuleiten/tmp/checksums.md5
.Hinweis: Wenn Sie Inhalte in früheren Versionen von überschreiben möchten
/tmp/checksums.md5
, verwenden Sie>
und nicht>>
Beachten Sie, dass dieser Befehl abhängig von der Geschwindigkeit und der Größe der Daten eine Weile dauern kann. Sie könnten mit nice und / oder ionice experimentieren, um die Leistung von md5deep zu steigern, aber das liegt außerhalb des Rahmens dieser Antwort.
Wenn die Erstellung der Prüfsummen abgeschlossen ist, haben Sie jetzt eine Datei mit Einträgen ähnlich den folgenden:
Die erste Spalte ist die md5-Prüfsumme und die zweite Spalte ist der relative Pfad zu der Datei, zu der die Prüfsumme gehört.
Wenn Sie sehen möchten, wie viele Dateien in der Prüfsummendatei vorhanden sind, geben Sie den folgenden Befehl ein:
wc /tmp/checksums.md5 -l
Nun möchten Sie überprüfen, ob die kopierten Daten korrekt sind:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
Der einzige Unterschied zu dem Zeitpunkt, an dem wir die Prüfsummen erstellt haben, ist -X, das den aktuellen Hash einer Datei anzeigt, wenn der Eintrag in der Dateiprüfsummen.md5 nicht übereinstimmt. Wenn am Ende des Tests
/tmp/compare.result
leer ist, können Sie darauf vertrauen, dass alle Dateien korrekt kopiert werden, da die Prüfsummen übereinstimmen.Beachten Sie, dass nur in der
/tmp/checksums.md5
Datei aufgeführte Dateien auf eine korrekte Prüfsumme überprüft werden. Wenn sich zusätzliche Dateien im/mnt/backup
Verzeichnis befinden, werden Sie von md5deep nicht darüber informiert.Anmerkungen:
Sie müssen nicht unbedingt die Umleitung verwenden, um Ausgabedateien zu speichern. Weitere Informationen finden Sie im md5deep-Handbuch.
Abhängig von den Berechtigungen der Dateien, die Sie verarbeiten, müssen Sie möglicherweise md5deep-Befehle als root ausführen.
quelle
Wenn Sie die Unterschiede zwischen zwei Verzeichnissen rekursiv
/path1
und/path2
ohne Verwendung überprüfen möchtenmd5deep
:Erläuterung:
path1
dazu gekommen, alle gedruckten Zeilenfind
relativ zupath1
(cd /path1
) zu machen&& find . -type f
)find
als Eingabe fürmd5
(| xargs md5
)Die Ausgabe sieht folgendermaßen aus, wenn es Unterschiede gibt:
quelle