Doppelte Dateien finden und separieren

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Kolibri
Beiträge: 37
Registriert: 03.06.2021 21:27:26

Doppelte Dateien finden und separieren

Beitrag von Kolibri » 03.03.2024 17:31:22

Im Forum gibt es schon einige Threads zum Thema in denen es um das Aufspüren von Duplikaten geht, aber das dort empfohlene Debianfdupes scheint mir nicht ideal. Vielleicht bin ich etwas paranoid, aber für den Vergleich nehme ich lieber SHA256 statt MD5, wie es fdupes nutzt. Ich habe mich dabei an dieser Anleitung orientiert: theHacker's Blog - Doppelte Dateien finden

Code: Alles auswählen

find . -type f -exec sha256sum "{}" + | tee ~/hashes.txt
Die Duplikate lassen sich dann so auflisten:

Code: Alles auswählen

cat ~/hashes.txt | sort | uniq -w64 -D --all-repeated=separate
Da ich einen Datenbestand von mehreren tausend Dateien vergleiche, ist manuelles hin- und herkopieren anhand der ausgegebenen Liste nicht wirklich praktikabel. Hat jemand eine Idee, wie ich anhand der hashes.txt einzigartige Dateien in einen Ordner verschiebe und die Duplikate im ursprünglichen Ordner?

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Doppelte Dateien finden und separieren

Beitrag von MSfree » 03.03.2024 17:50:29

Kolibri hat geschrieben: ↑ zum Beitrag ↑
03.03.2024 17:31:22
Da ich einen Datenbestand von mehreren tausend Dateien vergleiche
Bei so wenig Dateien ist die Wahrscheinlichkeit einer MD5-Kollision praktisch Null, da kannst du beruhigt auf fdupes zurückgreifen.

Selbst bei dem 200TB Datenbestand (>10 Millionen Dateien) in der Firma hatte ich bisher noch keine MD5-Kollision.
Zuletzt geändert von MSfree am 03.03.2024 17:51:23, insgesamt 1-mal geändert.

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Re: Doppelte Dateien finden und separieren

Beitrag von ernohl » 03.03.2024 17:51:08

Ähnliches mache ich in einem kleinen Script. Dabei wird die sortierte Liste der Checksummen mit der sortierten Liste der unique-Checksummen verglichen und die Abweichungen werden anders behandelt als die Übereinstimmungen.

Kolibri
Beiträge: 37
Registriert: 03.06.2021 21:27:26

Re: Doppelte Dateien finden und separieren

Beitrag von Kolibri » 03.03.2024 18:15:38

Bei fdupes kann ich die Dateien über -d aber nur löschen lassen, nicht verschieben. Wie bewerkstellige ich das?

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Doppelte Dateien finden und separieren

Beitrag von JTH » 03.03.2024 18:24:41

Nur noch als Anmerkung wegen des Hashalgorithmus’: Du solltest dir da keine Sorgen machen müssen. Nach dem Hashvergleich findet als letzter Schritt anscheinend noch ein byteweiser Vergleich statt. Damit kann ja nichts mehr schiefgehen ;)
man fdupes hat geschrieben: Searches the given path for duplicate files. Such files are found by comparing file sizes and MD5 signatures, followed by a byte-by-byte comparison.
Manchmal bekannt als Just (another) Terminal Hacker.

tobo
Beiträge: 1997
Registriert: 10.12.2008 10:51:41

Re: Doppelte Dateien finden und separieren

Beitrag von tobo » 04.03.2024 01:39:37

Kolibri hat geschrieben: ↑ zum Beitrag ↑
03.03.2024 18:15:38
Bei fdupes kann ich die Dateien über -d aber nur löschen lassen, nicht verschieben. Wie bewerkstellige ich das?
Du könntest dir mit

Code: Alles auswählen

fdupes -1 ...
alle entsprechenden Dubletten pro Zeile ausgeben lassen. Ausgabe wäre dann z.B. so :

Code: Alles auswählen

./fa1 ./fa2
./fb1 ./fb2 ./fb3
Dann veränderst du Zeilenanfang und -ende:

Code: Alles auswählen

mv ./fa1 ./fa2 $DIR
mv ./fb1 ./fb2 ./fb3 $DIR
und führst das mit sh aus:

Code: Alles auswählen

DIR=/dir/to/backup/; fdupes -1 ... | sed "s/^/mv /; s#\$# $DIR#" | sh
Das verschiebt alle Dubletten in das von dir angebene, existierende Verzeichnis $DIR. Soll eine Datei im ursprünglichen Verzeichnis erhalten bleiben, dann so:

Code: Alles auswählen

... | sed -E "s/^[^ ]+/mv/; s#\$# $DIR#" | sh
PS: Diese letzte Variante setzt voraus, dass sich im jeweils ersten Dateinamen - in jeder fdupes-Zeile - keine Leerzeichen befinden.

Kolibri
Beiträge: 37
Registriert: 03.06.2021 21:27:26

Re: Doppelte Dateien finden und separieren

Beitrag von Kolibri » 17.03.2024 11:05:43

Ich habe schlussendlich tatsächlich Debianfdupes verwendet. Ich fand die Bedienung nicht intuitiv und die Beschreibungen in der Hilfe könnten präziser formuliert sein, aber mit ein wenig Ausprobieren an Kopien habe ich eine zufriedenstellende Lösung gefunden.

Falls jemand irgendwann mal das gleiche Problem hat:
  1. Kopien erstellen
  2. Zu vergleichende Ordner in ein Verzeichnis kopieren
  3. Code: Alles auswählen

    fdupes -rd ./
  4. Ordner benennen, den man nicht erhalten will (nähere Spezifikation möglich, z. B. mit selb für Wortanfänge):

    Code: Alles auswählen

    sel Ordner
  5. Zum Löschen markieren:
  6. Backspace drücken

Antworten