Ich habe einen Forschungscluster mit ca. 40 TB Daten in drei Dateisystemen geerbt. Die Daten reichen fast 15 Jahre zurück und es gibt höchstwahrscheinlich eine große Anzahl von Duplikaten, da die Forscher die Daten aus unterschiedlichen Gründen gegenseitig kopieren und sich dann einfach an den Kopien festhalten.
Ich kenne De-Duping-Tools wie fdupes und rmlint. Ich versuche, eine zu finden, die auf einem so großen Datensatz funktioniert. Es ist mir egal, ob es Wochen (oder sogar Monate) dauert, bis alle Daten gecrawlt sind - wahrscheinlich werde ich es trotzdem drosseln, um die Dateisysteme zu schonen. Aber ich muss ein Tool finden, das entweder sehr effizient mit RAM arbeitet oder alle erforderlichen Zwischendaten in Dateien und nicht in RAM speichert. Ich gehe davon aus, dass mein RAM (64 GB) erschöpft ist, wenn ich alle diese Daten als einen Satz durchsuche.
Ich experimentiere jetzt mit fdupes auf einem 900GB Baum. Es sind 25% des gesamten Arbeitsspeichers belegt und die RAM-Auslastung hat sich die ganze Zeit langsam erhöht, jetzt sind es 700 MB.
Oder gibt es eine Möglichkeit, einen Prozess so zu steuern, dass festplattenzugeordneter RAM verwendet wird, sodass viel mehr zur Verfügung steht und kein System-RAM verwendet wird?
Ich verwende CentOS 6.
quelle
Antworten:
Ja, es heißt das Swap-Laufwerk. Sie haben wahrscheinlich schon eine. Wenn Sie befürchten, dass nicht mehr genügend RAM zur Verfügung steht, ist dies ein guter Anfang. Es funktioniert jedoch automatisch, sodass Sie nichts Besonderes tun müssen.
Ich würde mir keine Sorgen um fdupes machen. Probieren Sie es aus, es sollte ohne Probleme funktionieren.
quelle
Das Finden von Duplikaten basierend auf Hashkey funktioniert gut und ist sehr schnell.
quelle
Schreiben Sie eine schnelle App, um durch die Bäume zu gehen, indem Sie entweder (Hash, Mtime) => Dateipfad in ein Wörterbuch drücken oder die Datei zum Löschen markieren, wenn der Eintrag bereits vorhanden ist. Der Hash wird nur ein MD5 sein, der über die ersten N Bytes berechnet wird. Sie könnten ein paar verschiedene Durchgänge machen, mit einem Hash über einem kleinen N und einem weiteren mit einem Hash über einem großen N.
Sie könnten dies wahrscheinlich in weniger als zwanzig oder dreißig Zeilen Python tun (mit os.walk ()).
quelle