Tempo de carregamento: 0,385 segundos.

Artigos > Removendo milhares de arquivos em um diretório

496 Views
Tempo de leitura: 1 Minuto
Conteúdo atualizado em

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:

rm sess_a[a-z]* -f; rm sess_a[0-9]* -f; rm sess_b[a-z]* -f; rm sess_b[0-9]* -f;

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:

rsync -av --delete diretorio_vazio diretorio_lotado

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!

0 - 0

Thank You For Your Vote!

Sorry You have Already Voted!