Eu herdei um cluster de pesquisa com ~ 40 TB de dados em três sistemas de arquivos. Os dados remontam a quase 15 anos, e é provável que haja uma boa quantidade de duplicatas, pois os pesquisadores copiam os dados uns dos outros por diferentes razões e depois se apegam às cópias.
Eu sei sobre ferramentas de remoção de dupagem, como fdupes e rmlint. Estou tentando encontrar um que funcione em um conjunto de dados tão grande. Eu não me importo se levar semanas (ou talvez meses) para rastrear todos os dados - provavelmente eu o estrangularei para facilitar o uso dos sistemas de arquivos. Mas preciso encontrar uma ferramenta que seja de alguma forma super eficiente com a RAM ou que possa armazenar todos os dados intermediários de que precisa nos arquivos, e não na RAM. Estou assumindo que minha RAM (64GB) estará esgotada se eu rastrear todos esses dados como um conjunto.
Agora estou experimentando fdupes em uma árvore de 900 GB. É 25% do caminho e o uso da RAM tem aumentado lentamente o tempo todo, agora é de 700 MB.
Ou existe uma maneira de direcionar um processo para usar a RAM mapeada em disco, para que haja muito mais disponível e ele não use a RAM do sistema?
Estou executando o CentOS 6.
fonte
Respostas:
Sim, é chamado de unidade de troca. Você provavelmente já tem um. Se você está preocupado com a falta de RAM, aumentar esse é um bom ponto de partida. Ele funciona automaticamente, portanto, não há necessidade de fazer nada de especial.
Eu não me preocuparia com fdupes. Experimente, ele deve funcionar sem problemas.
fonte
encontrar duplicatas com base no hashkey funciona bem e é muito rápido.
fonte
Escreva um aplicativo rápido para percorrer as árvores, pressionando (hash, mtime) => caminho do arquivo em um dicionário ou marcando o arquivo para exclusão, se a entrada já existir. O hash será apenas um MD5 calculado nos primeiros N bytes. Você pode fazer algumas passagens diferentes, com um hash sobre um N pequeno e depois outro com um hash sobre um N. grande.
Você provavelmente poderia fazer isso em menos de vinte ou trinta linhas de Python (usando os.walk ()).
fonte