Beste Möglichkeit, doppelte Datendateien zwischen zwei Linux-Rechnern zu finden?

Beste Möglichkeit, doppelte Datendateien zwischen zwei Linux-Rechnern zu finden?

Ich habe zu Hause zwei Debian-Boxen, auf denen sich verschiedene Fotos, Audio-, Video- und andere Datendateien befinden. Sie sind beide unorganisiert, ich würde sie gerne ordnen und doppelte Dateien zwischen ihnen entfernen. Auf beiden gibt es keine wirklich logische Ordnerstruktur.

Gibt es eine einfache Möglichkeit, dies zu tun?

Antwort1

Es gibt viele Varianten. Ich denke, MD5 ist auf dem richtigen Weg, aber die Verwendung von SHA-Summen ist wahrscheinlich etwas besser. SHA1 hat wahrscheinlich eine ähnliche Geschwindigkeit und führt weniger wahrscheinlich zu einer Kollision (obwohl die Wahrscheinlichkeit einer Kollision in beiden Fällen infinitesimal ist).

Ich würde etwas in der Art des Folgenden tun:

  1. Erstellen Sie auf jeder Box eine Liste von Dateien mit ihren SHA1-Summen mit einem Befehl wie

find /Pfad/zu/Dateien -type f -exec sha1sum {} + > pcX-sha1.lst

  1. Ich würde dann beide Dateien auf eine Box kopieren. Sobald ich das getan habe, würde ich eine Liste mit SHA-Prüfsummen finden, die nur Dateien anzeigt, die Duplikate sind. Sobald sich die Dateien im selben Verzeichnis befinden, etwa so

cut -f1 -d" " pcX-sha1.lst pcY-sha1.lst | sort | uniq -d > duplicateshas.lst

Die letzte Liste dient zum Auffinden doppelter Dateien. Dies können Sie mit einem Befehl wie diesem tun:

für jedes in $(cat duplicateshas.lst); führen Sie grep $each pcX-sha1.lst aus; fertig

Oben werden die Dateien mit ihren Namen aufgelistet, die in pcX-sha1.lst gefunden wurden. Sie können natürlich jede der beiden Dateien verwenden (oder beide Dateien, wenn Sie den Speicherort der Dateien an beiden Orten sehen möchten und wenn sie unterschiedliche Dateinamen haben).

verwandte Informationen