Hallo, ich habe folgendes Problem, dass ich auf einem Laufwerk viele Dateien gleichen Namens habe und prüfen möchte, ob diese identisch sind. Da es sich um kleine Dateien von wenigen kB handelt, dachte ich, diese Dateien mit find aufzuspüren und in einem Verzeichnis entsprechend der Herkunft bezeichnet abzulegen. Dann muss ich nur dieses Verzeichnis durchgehen und kucken, ob alle Dateien zueinander identisch sind. Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann? Gruß Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Joachim! On Mi, 07 Apr 2010, Joachim H. wrote:
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
diff(1), cmp(1) Brauchst Du ein fertiges Script? Mit freundlichen Grüßen Christian -- Wer schreit, der lügt. Die Wahrheit hat eine leise Stimme. -- Isländisches Sprichwort -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Christian, Am 07.04.2010 14:47, schrieb Christian Brabandt:
Hi Joachim!
On Mi, 07 Apr 2010, Joachim H. wrote:
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
diff(1), cmp(1)
Die Tools kenne ich. Mein Problem ist nicht das Vergleichen von zwei Dateien sondern von 47! Ist nur eines anders oder gibt es drei oder vier verschiedene Versionen? Um alle mit diff bzw. cmp gegenseitig zu prüfen, bräuchte ich mit einem dummi-Ansatz 47+46+45... Vergleiche. Das wären so 1104! Geht natürlich auch intelligenter, doch bedarf das der Reanimierung längst tot geglaubter mathematischer Instinkte bei mir. Deshalb die Idee, Hash-Codes zu berechnen. Dann habe ich eine Liste mit Codes, die ich einfach sortieren und zählen kann.
Brauchst Du ein fertiges Script?
Wenn's eins gibt, dann bin ich natürlich gerne interessiert. Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Joachim! On Mi, 07 Apr 2010, Joachim H. wrote:
Hallo Christian,
Am 07.04.2010 14:47, schrieb Christian Brabandt:
Hi Joachim!
On Mi, 07 Apr 2010, Joachim H. wrote:
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
diff(1), cmp(1)
Die Tools kenne ich. Mein Problem ist nicht das Vergleichen von zwei Dateien sondern von 47!
Ist nur eines anders oder gibt es drei oder vier verschiedene Versionen?
Um alle mit diff bzw. cmp gegenseitig zu prüfen, bräuchte ich mit einem dummi-Ansatz 47+46+45... Vergleiche. Das wären so 1104! Geht natürlich auch intelligenter, doch bedarf das der Reanimierung längst tot geglaubter mathematischer Instinkte bei mir.
Klar. Und wo ist das Problem? Bei der Anzahl halte ich das nicht für ein Problem, zumal es kleine Dateien sind: Minimalbeispiel: find . -type f -exec bash -c ' for file; do for df in /tmp/dest/*; do cmp -s -- "$file" "$df" && echo "$file und $df sind gleich" done done ' bash-find {} +
Deshalb die Idee, Hash-Codes zu berechnen. Dann habe ich eine Liste mit Codes, die ich einfach sortieren und zählen kann.
Dann nimm halt md5sum oder sha1sum. Und dann mit awk oder Perl die Hashes berechnen und hinterher vergleichen. Dürfte auch kein Problem sein. Mit freundlichen Grüßen Christian -- Dreiecksverhältnisse machen auch dann Spaß, wenn man von Geometrie keine Ahnung hat. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 07 Apr 2010, Joachim H. schrieb:
ich habe folgendes Problem, dass ich auf einem Laufwerk viele Dateien gleichen Namens habe und prüfen möchte, ob diese identisch sind.
Da es sich um kleine Dateien von wenigen kB handelt, dachte ich, diese Dateien mit find aufzuspüren und in einem Verzeichnis entsprechend der Herkunft bezeichnet abzulegen. Dann muss ich nur dieses Verzeichnis durchgehen und kucken, ob alle Dateien zueinander identisch sind.
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
fdupes HTH, -dnh -- Well I wish you'd just tell me rather than try to engage my enthusiasm, because I haven't got one. -- Marvin -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 07 April 2010 21:24:32 schrieb David Haller:
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
fdupes
Ich verwende(te) dafür star. Aus meinem Script: cd "$BRENNQUELLE" ("$MYSTAR" -cL .)|(cd "$MOUNTVERZEICHNIS"; "$MYSTAR" -diff -v 'diffopts=!times,!perm,!type,!id') 2>&1 | tee -a "$VERIFYLOG" Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin, Am 07.04.2010 21:24, schrieb David Haller:
Hallo,
Am Mit, 07 Apr 2010, Joachim H. schrieb:
ich habe folgendes Problem, dass ich auf einem Laufwerk viele Dateien gleichen Namens habe und prüfen möchte, ob diese identisch sind.
Da es sich um kleine Dateien von wenigen kB handelt, dachte ich, diese Dateien mit find aufzuspüren und in einem Verzeichnis entsprechend der Herkunft bezeichnet abzulegen. Dann muss ich nur dieses Verzeichnis durchgehen und kucken, ob alle Dateien zueinander identisch sind.
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
fdupes
David du bist ein Schatz! Das ist genau das was ich gesucht habe und sehr flott obendrein. Gruß Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On 07.04.2010, Joachim H. wrote:
Hallo,
ich habe folgendes Problem, dass ich auf einem Laufwerk viele Dateien gleichen Namens habe und prüfen möchte, ob diese identisch sind.
Wie mach ich die Überprüfung sinnvoll? Für jede Datei einen Hash errechnen und diese vergleichen? Gibt es schon fertige Lösungen, die ich verwenden kann?
Ich habe mir dafuer irgendwann mal diese Zeile geschrieben, ist fast selbsterklaerend: find -L $1 -type f -size +40M -exec md5sum {} 2>/dev/null \; | sort | uniq -w 32 -D > doppelt.txt Du kannst auch selbstverstaendlich die Mindestfilegroesse weglassen, sha256 benutzen oder was immer du willst. Md5 ist am Schnellsten. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Al Bogner
-
Christian Brabandt
-
David Haller
-
Heinz Diehl
-
Joachim H.