A maneira mais rápida de excluir um diretório não vazio no Linux

4

Eu uso o comando rm -rf directory mas me deparei com o seguinte artigo: Artigo Isso sugere que rsynch para uma pasta vazia é o caminho mais rápido? rsync -a –delete empty / a Por que esse é o caso? Existe outro método mais rápido para excluir uma pasta nonEmpty?

Outro artigo interessante sobre esse Artigo2

    
por firephil 23.10.2013 / 13:25

2 respostas

3

Com base em um rápido vislumbre das fontes GNU Coreutils 8.21 e rsync 3.0.1, além de dar uma olhada no que eles fazem com o strace, o rm do GNU Coreutils parece chamar malloc () um pouco mais do que o rsync faz quando executa a mesma coisa. Tenho dúvidas de que isso explica completamente a diferença de velocidade, mas é parte da explicação mais provável.

    
por 23.10.2013 / 14:19
2

Descobri que a solução mais rápida e mais eficiente em termos de memória é usar esse comando no diretório completo com milhões de arquivos:

ls -f1 | xargs rm

Explicação

Como ls -f1 não classificará o conteúdo do diretório, ele iniciará a saída imediatamente. O comando rm terá apenas um argumento: o nome real do arquivo vindo do primeiro comando. Foi a única solução para excluir 3.000.000 de arquivos do diretório de sessões de uma loja online Magento. O servidor rodava em uma máquina virtual com apenas 2Gb de RAM - não havia outra possibilidade de excluir os arquivos.

    
por 30.07.2015 / 16:45