Seite 1 von 1

find md5sum xargs sort

Verfasst: 11. Aug 2007 18:41
von komsomolze
Ich möchte eine übersichtliche MD5-Liste.
Die Essenz meiner bisherigen Versuche:
---------------------------------------

Code: Alles auswählen

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: Alles auswählen

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: Alles auswählen

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

Code: Alles auswählen

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: Alles auswählen

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

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

Code: Alles auswählen

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

Code: Alles auswählen

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: Alles auswählen

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?

Verfasst: 12. Aug 2007 11:19
von 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

prüfsumme

Verfasst: 12. Aug 2007 12:24
von ano max
Hallo, ich glabe lsat mach auch ein Prüfsummenabbild..

Verfasst: 12. Aug 2007 22:31
von 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'. :?