J'ai hérité d'un cluster de recherche avec environ 40 To de données sur trois systèmes de fichiers. Les données remontent à près de 15 ans, et il y a très probablement une bonne quantité de doublons alors que les chercheurs se copient les données pour différentes raisons, puis s'accrochent aux copies.
Je connais les outils de déduplication comme fdupes et rmlint. J'essaie d'en trouver un qui fonctionnera sur un si grand ensemble de données. Je me fiche que cela prenne des semaines (ou peut-être même des mois) pour explorer toutes les données - je vais probablement les limiter de toute façon pour aller doucement sur les systèmes de fichiers. Mais je dois trouver un outil qui est en quelque sorte super efficace avec la RAM, ou qui peut stocker toutes les données intermédiaires dont il a besoin dans des fichiers plutôt que de la RAM. Je suppose que ma RAM (64 Go) sera épuisée si j'explore toutes ces données en un seul ensemble.
J'expérimente avec fdupes maintenant sur une arborescence de 900 Go. C'est 25% du chemin à parcourir et l'utilisation de la RAM a lentement augmenté tout le temps, maintenant elle est à 700 Mo.
Ou, existe-t-il un moyen de diriger un processus pour utiliser la RAM mappée sur disque afin qu'il y ait beaucoup plus disponible et qu'il n'utilise pas de RAM système?
J'utilise CentOS 6.
la source
Réponses:
Oui, cela s'appelle le lecteur de swap. Vous en avez probablement déjà un. Si vous avez peur de manquer de RAM, alors augmenter c'est un bon point de départ. Il fonctionne cependant automatiquement, il n'est donc pas nécessaire de faire quoi que ce soit de spécial.
Je ne m'inquiéterais pas des fdupes. Essayez-le, cela devrait fonctionner sans problème.
la source
la recherche de doublons basés sur hashkey fonctionne bien et est très rapide.
la source
Écrivez une application rapide pour parcourir les arbres, en poussant (hachage, mtime) => chemin de fichier dans un dictionnaire ou en marquant le fichier pour suppression si l'entrée existe déjà. Le hachage sera juste un MD5 calculé sur les N premiers octets. Vous pouvez faire quelques passes différentes, avec un hachage sur un petit N puis un autre avec un hachage sur un grand N.
Vous pourriez probablement le faire en moins de vingt ou trente lignes de Python (en utilisant os.walk ()).
la source