Como remover rapidamente centenas de milhares de arquivos? [duplicado]

2

Estou executando um programa de simulação em um cluster de computação (Scientific Linux) que gera centenas de milhares de arquivos de coordenadas atômicas. Mas estou tendo um problema ao excluir os arquivos porque o rm -rf nunca é concluído e nem o

find . -name * | xargs r

Não há uma maneira de desvincular esse diretório da árvore de diretórios? A unidade de armazenamento é usada por centenas de outras pessoas, por isso a reformatação não é uma opção.

Obrigado

    
por Nick 11.11.2012 / 08:02

4 respostas

2

Eu geralmente uso algo como:

find ./directoryname -type f -name '*file-pattern*' -exec rm {} +

Também é possível usar o sinalizador -delete no comando find .

find ./directoryname -type f -name '*file-pattern*' -delete

A geração desses arquivos é um problema / bug? Existe alguma coisa no nível do aplicativo que possa ajudar?

    
por 11.11.2012 / 08:07
2

Meu palpite é que você está usando um tipo de arquivo estranho que impede que o rm seja concluído. Tente algo como

find . -type d -o -type f | xargs rm -rf --
    
por 11.11.2012 / 08:53
2

Simplesmente desvincular o diretório seria perfeitamente possível se você não se importasse em não receber o espaço livre de volta, e todos os arquivos reaparecendo em /lost+found no próximo fsck .

Remover os arquivos não é o bit que consome tempo, é todo o código de manutenção do sistema de arquivos que é arrumado nos bastidores, o que consome tempo, e leva um tempo extra para fazer milhões de arquivos pequenos. Demora ainda mais se eles estiverem em uma estrutura de arquivos plana e ampla, em vez de uma estrutura profunda e fina (ou seja, muitos arquivos em alguns diretórios, em vez de muitos arquivos em diretórios aninhados). Como você percebeu, em alguns casos, pode ser mais demorado fazer isso do que simplesmente recriar o sistema de arquivos.

Se esse fosse o meu problema, eu criaria uma partição personalizada para manter esses arquivos e, além disso, provavelmente usaria o tmpfs , que é melhor projetado para o armazenamento de arquivos temporários de qualquer maneira, e reduza o tempo de recriação do sistema de arquivos.

    
por 11.11.2012 / 09:14
2

Método 1 Supondo que esses arquivos sejam criados, só precisa ser removido após o uso.

Se possível, tenha todos esses arquivos, e somente esses arquivos , criados em uma partição ou disco autônomo. Quando é hora de excluí-los, desmonte a partição e formate-a. O formato EXT4 (não EXT2) demora apenas alguns segundos.

Verifique se você não está salvando informações / relatórios / etc no mesmo local.

Você pode montar uma nova partição ou um novo disco no local original, diretamente ou com a opção -o bind .

Método 2

Pensando um pouco fora da caixa, em vez de arquivo individual, coloque todos esses dados em uma tabela de banco de dados. Em seguida, solte a tabela inteira após o uso.

    
por 11.11.2012 / 09:13