find md5sum xargs sort

Software besorgen und anwenden
Post Reply
Message
Author
komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

find md5sum xargs sort

#1 Post by komsomolze »

Ich möchte eine übersichtliche MD5-Liste.
Die Essenz meiner bisherigen Versuche:
---------------------------------------

Code: Select all

find -type f -exec md5sum {} \;
löst die Aufgabe komplett, aber "unsortiert". Dateien eines Verzeichnisses werden zwischen Unterverzeichnissen "eingestreut".
Ein 'sort' auf die erstellte Summenliste funktioniert nicht richtig, da sort einige Sonderzeichen wie "." oder "~" nicht beachtet.

Code: Select all

find -type d -exec find {} -maxdepth -type f \;
gibt mir eine sortierte, übersichtliche Namen-Liste,
aber dann noch ein '-exec md5sum {}' einzufügen ist nicht valid:

Code: Select all

find -type d -exec find {} -maxdepth -type f -exec md5sum {} \; \;
Und '-exec' führt keine Funktionen aus(?):

Code: Select all

FUNC() {
find ?? -maxdepth -type f -exec md5sum {} \;
}
find -type d -exec FUNC {} \;

find: FUNC: No such file or directory

Eine potenzielle formal kurze Lösung funkioniert nicht

Code: Select all

find -type d -exec md5sum {}/* \;

md5sum: ./DIR/*: No such file or directory
obwohl der direkte Aufruf in der Shell durchgeht:

Code: Select all

md5sum DIR/*
Hierbei jedoch wie in der xargs-Lösung:

Code: Select all

find -type f -print0 | xargs -0 md5sum (häufiger Tip)
wird die Grenze von md5sum berührt, das je nach Namen/Pfadlänge schon bei einigen hundert bis einigen tausend übergebenen Argumenten aussteigt.
---------------------------------------


Da ich so nicht weiterkomme

Wie kann ich md5sum hier anbringen? (ohne xargs?)

Code: Select all

find -type d -exec find {} -maxdepth -type f \;
Oder muss ich eine Datei der Namen anlegen und diese mit for und sed (wegen der Sonder/Leerzeichen) an md5sum übergeben?

Oder wie bringe ich sort dazu, ALLE Zeichen zu beachten?
(für eine Nachbehandlung einer erstellten MD5-Liste)

Oder brauche ich md5deep?
mfg komsomolze

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

#2 Post by hjb »

Hi!

Je nachdem, was du erreichen willst, brauchst du dich vielleicht gar nicht mit eigenen Skripten herumzuplagen, sondern kannst aide, LIDS oder das hier verwenden.

Grüße,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

ano max

prüfsumme

#3 Post by ano max »

Hallo, ich glabe lsat mach auch ein Prüfsummenabbild..

komsomolze
Posts: 430
Joined: 03. Mar 2006 23:16

#4 Post by komsomolze »

Hallo,

LSAT,LIDS oder aide wäre overpowerd.
Ich dachte eher an eine Liste, die sich auch als Inhaltsverzeichnis (für Spiele oder CDs) zum manuellen Durchsuchen eignet.
Für ein Programm ist die Sortierung einer MD5-Datei ja völlig gleichgültig.

@hjb
"das hier" entspricht ja dem 'find -type f > Liste.txt'-Beispiel, denke ich.

'md5deep -r' wollte ich außen vor lassen, weil es kein Paket von debian gibt, aber funktional entspricht es meinen Wünschen.
Ist jetzt also doch nach /usr/local installiert.

Danke für die Vorschläge
und noch einen schönen Sonntag (die letzte halbe Stunde :-) )




--------- EDIT -----------------
md5deep ist aber ein wenig "seltsam" in der Anwendung:
Das Erstellen einer MD5-Liste ist kein Thema, aber beim Prüfen ist umzudenken gegenüber 'md5sum -c':
  • Es werden die Hashes von Dateien berechnet und überprüft, ob der Hash in der MD5-Liste auftaucht oder nicht.
    Dadurch geben umbenannte Dateien keinen Fehler aus, wenn nur ihr Hash in der Liste auftaucht.

    Da md5deep beim Prüfen ja nicht von der MD5-Liste ausgeht, kann es sich für längere Zeit verabschieden falls im Verzeichnis einige große Repos liegen, obwohl in der MD5-Liste nur ein paar Dateien mit wenigen kB stehen.
Da nehme ich für das Prüfen dann doch lieber 'md5sum -c'. :?
mfg komsomolze

Post Reply