Artigos, LinuxArtigos > Removendo milhares de arquivos em um diretório

Artigos > Removendo milhares de arquivos em um diretório

Como chegou nesse ponto? Eh o que nos perguntamos quando nos vemos em uma situação em que determinados diretórios com milhares de pequenos arquivos consomem aqueles preciosos inodes do servidor.

A seguir, explico como se livrar desse problema sem detonar a performance do seu servidor.

Antes, devemos entender alguns conceitos.

Comando RM:


Usar o rm para remover o conteúdo indesejado é a saída mais óbvia, mas talvez não seja a mais elegante. Dependendo da quantidade de arquivos, o rm consumirá muita memória (ou toda ela, até a swap) o que prejudicará a performance do ambiente.

Para que o rm possa ser usado sem impactar tanto, utilize pequenos lotes. Por exemplo; tenho um diretório com milhares de arquivos cujo o nome começa com “sess_”. Depois do caractere underline tenho caracteres de “a” a “z” e de “0” a “9”. Nesse meu caso, poderia criar os seguintes lotes:

Criaria lotes como esses até chegar em “sess_z[a-z]” e “sess_z[0-9]”, contemplando assim todos arquivos do diretório.

Mesmo com todo esse cuidado, corremos o risco de interferir na performance do ambiente.

Comando Rsync

Basicamente, em um procedimento de cópia de dados com o Rsync, podemos remover do destino todo conteúdo que não exista na origem. Portanto, se eu copiar um diretório vazio para um diretório lotado de arquivos, estarei substituindo o diretório lotado pelo diretório vazio.

O comando é simples:

O Rsync é mais inteligente do que o rm, pois ele indexa tudo aquilo que irá remover antes de remover ao passo que o rm computa enquanto o remove, o que o faz consumir mais recursos.

Importante que se diga que a indexação do Rsync pode demorar muito. Tudo depende do seu cenário.

A minha dica é:

* Tem muita memória RAM e o ambiente não é critico? Use o “rm”.
* Não tem muita memória RAM e o ambiente é critico? Use o “rsync”.

Abs!

Categories: Artigos, Linux Tags: , , ,

Comments

No Comments Yet. Be the first?

Post a comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.