Heredé un grupo de investigación con ~ 40 TB de datos en tres sistemas de archivos. Los datos se remontan a casi 15 años, y es muy probable que haya una buena cantidad de duplicados a medida que los investigadores copian los datos de los demás por diferentes razones y luego simplemente se quedan con las copias.
Sé sobre herramientas de eliminación de duplicados como fdupes y rmlint. Estoy tratando de encontrar uno que funcione en un conjunto de datos tan grande. No me importa si toma semanas (o tal vez incluso meses) rastrear todos los datos; probablemente lo estrangularé de todos modos para ser fácil en los sistemas de archivos. Pero necesito encontrar una herramienta que sea de alguna manera súper eficiente con RAM, o que pueda almacenar todos los datos intermedios que necesita en archivos en lugar de RAM. Supongo que mi RAM (64 GB) se agotará si rastreo todos estos datos como un conjunto.
Estoy experimentando con fdupes ahora en un árbol de 900 GB. Está en un 25% y el uso de RAM se ha estado incrementando lentamente todo el tiempo, ahora es de 700 MB.
O, ¿hay alguna manera de dirigir un proceso para usar RAM asignada en disco para que haya mucho más disponible y no use RAM del sistema?
Estoy ejecutando CentOS 6.
fuente
Respuestas:
Sí, se llama unidad de intercambio. Probablemente ya tengas uno. Si le preocupa quedarse sin RAM, entonces aumentar este es un buen lugar para comenzar. Sin embargo, funciona automáticamente, por lo que no es necesario hacer nada especial.
No me preocuparía por los fdupes. Pruébalo, debería funcionar sin problemas.
fuente
encontrar duplicados basados en hashkey funciona bien y es muy rápido.
fuente
Escriba una aplicación rápida para caminar por los árboles, ya sea empujando (hash, mtime) => ruta de archivo en un diccionario o marcando el archivo para su eliminación si la entrada ya existe. El hash solo será un MD5 calculado sobre los primeros N bytes. Puede hacer un par de pases diferentes, con un hash sobre una N pequeña y luego otro con un hash sobre una N. grande
Probablemente podría hacer esto en menos de veinte o treinta líneas de Python (usando os.walk ()).
fuente