terça-feira, 12 de janeiro de 2010

Excluir arquivos por período...

Cada um tem uma necessidade e a minha foi essa.... =D

Precisei remover arquivos de e-mail de alguns usuários onde o período podia ser algo "grosseiro" tipo, antes de Julho de 2009 apaga tudo!!! maravilha.. heheh
Alguns casos pode ser feito por um período menor, enfim, o find de da uma larga possibilidade de comandos e opções para realizar essa tarefa, no meu caso foi o "-mtime"

1) Para realizar o teste, foi feito uma cópia da pasta padrão (original) mantando todos os atributos de permissão de arquivos incluindo as datas de criação ou alteração dos mesmo.
O comando executado abaixo foi executado dentro da pasta Maildir do usuário:

# cp -R --preserve=all cur/ cur_backup

2) Depois de executado este comando, eu fiz uma conta "meio" por cima da quantidade de dias que teria que colocar para que os e-mails com data anterior ao mês de Julho de 2009 fossem copiados para uma pasta de backup paralela.
Este comando foi executado dentro da pasta "cur_backup":

# find ./ -type f -mtime +210 -exec mv {} ../cur_teste/ \;

Após a conclusão do comando, verifiquei as pastas e em ambas os arquivos estavam corretos, na pasta "cur_backup" os arquivos com data posterior a Julho de 2009 foram mantidos e, os arquivos com data inferior a Julho de 2009 foram movidos (mv) para a pasta "cur_teste".

Mas, o que quero na verdade é apagar os arquivos e não gerar um backup, se esse for o caso, a atividade foi executada com sucesso, conforme acima, basta executar o comando na pasta principal. É por sua conta e risco, analise o seu ambiente primeiro.

3) Para realizar a operação de apagar os arquivos com data anterior a Julho de 2009 executei o seguinte comando:

# find ./ -type f -mtime +210 -exec rm -rf {} \;

Digamos que antes de tudo você queira verificar se vai apagar os arquivos corretos, execute o comando abaixo para listar os arquivos baseados na soma de dias que você colocou em "-mtime":

# find ./ -maxdepth 1 -type f -mtime +210 | xargs ls -lh | more

Neste caso, os arquivos que apareceram aqui foram os arquivos anteriores a Julho de 2009.

Existem outras variantes para realizar esta atividade mas, essa resolveu o meu problema.

Agora seria interessante bolar um script para colocar essa informações e tornar o processo mais automatizado possível. Fica pra segunda parte.

Espero ter ajudado alguém.

Abraços e Deus abençoe.