Doppelte Dateien

kandamir

Experte
Thread Starter
Mitglied seit
19.03.2018
Beiträge
181
Hallo zusammen,

Bei mir geht es um das Thema doppelte Dateien finden. Ich habe dazu schon einiges an Tools gefunden, aber keines war dabei, welches mein Szenario abzudecken scheint. Mein Szenario sieht so aus:

Zwei Verzeichnisse mit Unterverzeichnissen. Im beiden Verzeichnissen befinden sich Foto- und Video-Dateien. Aufgabe: Prüfe, ob es für jedes Foto oder Video aus Verzeichnis1 ein Duplikat in Verzeichnis2 gibt (per Hash-Vergleich o.ä.). Falls ja: entweder a) protokolliere vollständigen Dateinamen aus Verzeichnis1 in einer Textdatei oder b) Lösche die Datei in Verzeichnis1.
Die Anzahl der Dateien sowohl in Verzeichnis1 als auch der Dateien in Verzeichnis2 ist potentiell sehr groß (mehrere Tausend Dateien). Die Anzahl der doppelten Dateien ist ebenfalls potentiell sehr groß.

In meinem Szenario geht es also nicht darum, nach doppelten Dateien innerhalb eines Verzeichnisbaumes zu suchen, sondern über zwei Verzeichnisbäume hinweg. Eine manuelle Prüfung aller Fundstellen ist aufgrund der erwarteten Menge an Duplikaten nicht machbar.

Ich habe diverse Tools wie fslint, fdupes usw. gefunden, aber bei keinem Tool konnte ich herauslesen, dass dieses „wenn in Verzwichnis2 vorhanden, lösche es aus Verzeichnis1“ geht - oder ich habe nicht verstanden, wie es denn geht. Kann auch sein…

Hat jemand ein Tool oder wegen mir auch auch Skript parat, mit dem die o.g. Aufgabe gelöst werden könnte. Das ganze sollte möglichst unter Linux laufen. Windows-Tools scheiden mangels Windows-Installation aus. Am liebsten Linux-Shell.

Danke vorab für Eure Tipps!
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich habe bei meinen Duplikatsuchen mit Alldupportable bisher gute erfolge gehabt.
Zumindest wenn es um gleiche Dateinamen ging. Bei Namensunterschieden wurde es schon etwas Glückloser.
 
Danke! AllDup ist ein Windows-Tool, das scheidet bei mir aus, da ich wie oben geschrieben keine Windows-Installation habe.

Ähnlich sieht es bei FreeCommander bzw. TotalCommander aus. Die freie Linux-Variante MidnightCommander hat die Funktion „Verzeichnisse vergleichen“, aber da passiert tatsächlich nix, wenn man eine der Vergleichsmethoden (schnell, nur Größe, gründlich) auswählt…
 
fdupes bzw. jdupes (letzteres ist schneller und hat mehr Optionen, muss man aber in den meisten (allen?) Distros selbst kompilieren)

jdupes --recursive --omit-first Verzeichnis2 Verzeichnis1
Gibt alle Duplikate aus (--omit-first gibt das "original" aus Verzeichnis2 nicht mit aus). Das beinhaltet auch Duplikate von Dateien aus Verzeichnis2 in Verzeichnis2. Wenn wirklich nur Dateien aus Verzeichnis1 weg sollen das --omit-first weglassen und ein | grep Verzeichnis1 dranhängen. (Das beinhaltet dann ggf. immer noch Duplikate aus Verzeichnis1 in Verzeichnis1. Wenn du die behalten willst musst du den Output so filtern, dass du pro Leerzeilen getrennten Block nur die erste in Verzeichnis1 löschst. Aber vermutlich willst du dann sowieso manuell prüfen, welches der Duplikate du behältst.)


jdupes --recursive --delete --no-prompt Verzeichnis2 Verzeichnis1
Behält bei Duplikaten nur die erste gefundene Datei (in Verzeichnis2) und löscht den Rest ungefragt. Einzigartige Dateien ohne Duplikate sind davon natürlich nicht betroffen.
Beitrag automatisch zusammengeführt:

Gerade noch gesehen, dass du dir fdupes schon angeschaut hast:
Ich habe diverse Tools wie fslint, fdupes usw. gefunden, aber bei keinem Tool konnte ich herauslesen, dass dieses „wenn in Verzwichnis2 vorhanden, lösche es aus Verzeichnis1“ geht
Indem man die Logik umkehrt und Verzeichnis2 als „original“ behandelt – dann muss man nur das „Duplikat“ in Verzeichnis1 löschen.
 
Zuletzt bearbeitet:
Danke, @YCbCr, Deine Hinweise sind sehr wertvoll. Dass ich mir das Ergebnis zurecht „greppen“ kann, darauf hätte ich ja auch mal selbst kommen können. Ich werde das auf jeden Fall heute mal testen.

Ich habe gestern Abend selbst noch ein Tool gefunden, mit dem ich ebenfalls sehr schnell sehr gute Ergebnisse erreicht habe. Das Tool heißt czkawka und ist plattformübergreifend verfügbar. Gibt es mit GUI, aber auch als Kommandozeilen-Tool. Ich habe die GUI Variante auf meinem Mac probiert, musste dazu Homebrew aktualisieren, was mit am längsten gedauert hat. Dort kann man mehrere Pfade einschließen (auch welche ausschließen) und kann Referenzpfade deklarieren, in dem man einfach Häkchen setzt. Gefundene Duplikate in Referenzverzeichnissen sind nucht zum Löschen auswählbar, sodass man sich dort nicht versehentlich Dateien löscht. Da meine Referenz (ca. 90.000 Fotos und Videos) auf dem Fileserver liegen, war ich sehr gespannt, wie lange es dauert, um die Duplikate in meinem „Verzeichnis1“ zu finden. Und ich war erstaunt, wie schnell das doch tatsächlich geht! Ich habe die Zeit nicht gestoppt, aber wir sprechen von Minuten, nicht von Stunden. Das sind wirklich zig Gigabyte, die da geprüft werden mussten. Über‘s LAN. Auch das Handling mit der GUI ist wirklich recht intuitiv, sodass ich das Tool tatsächlich empfehlen würde.

Wo doe Performance in Sachen Qualität des Ergebnisses nicht gestimmt hat, ist die Suche nach ähnlichen Fotos (da hat mir czkawka vermutlich zu wenige ähnliche Fotos ausgespuck) und noch schlimmer: die Suche nach ähnlichen Videos - da hat czkawka zwei völlig unterschiedliche Videos mit ähnlucher Dateigröße ausgespuckt. Bei sowas also immer schön kontrollieren. Um ähnliche Fotos zu finden, nutze ich XnViewMP ganz gerne.

Hier nich der Link zu dem Tool, ich gehe davon aus, dass das erlaubt ist, sonst bitte den Link einfach entfernen, liebe Admins: https://github.com/qarmin/czkawka

Edit: czkawka legt einen Cache mit den Hashes an, sodass diemDuplikatsuche bei mehreren Durchgängen also schneller werden sollte, wenn man immer wieder das Referenzverzeichnis durchsucht.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh