Exclusão de diretórios por mês

1. Exclusão de diretórios por mês

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/05/2016 - 10:02h

Bom dia galera, venho novamente precisar da ajuda de vocês, preciso fazer a criação de um script e não estou conseguindo, preciso fazer com que ele mantivesse os 3 últimos meses de diretórios, por exemplo, tenho JAN, FEV, ABR, MAI, etc preciso manter apenas os 3 últimos diretórios porém pegando pelo mês, quando listo esses diretórios eles vem da seguinte maneira:

JAN 29 08:08 01
FEV 29 08:34 02
MAR 29 08:25 03
ABR 23 08:11 04
MAI 23 08:16 05

Precisava remover baseado pelo nome(mês), por exemplo, apagar FEV, JAN, iria colocar na cron para executar a cada 30 dias, partindo de que eu já teria 3 diretórios (MAR, ABR e MAI) eu colocaria para ser executado na cron para exclusão daqui 30 dias, em 30 dias teria JUN e removeria MAR, porém não estou achando uma forma de criar esse script, alguém poderia me ajudar ?


desde já agradeço a todos.

Clemer


  


2. Re: Exclusão de diretórios por mês

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 23/05/2016 - 10:13h

Doido, use o find pra isso. Ele consegue manter os arquivos de acordo com a data de criação. Ex.:


find /pasta -ctime +30 -exec rm -rf '{}' \;


Faça o teste, trocando "rm -rf" por "echo" e veja se ele lista somente os arquivos com idade a partir de 31 dias.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Exclusão de diretórios por mês

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/05/2016 - 10:46h

Bom dia renato_pacheco, o problema é que, possuo um diretório 2016, dentro dele, vão sendo criados automaticamente os meses, 01, 02, 03 etc; onde dentro de cada diretório mês, são criados subdiretórios com os dias dos meses, 01, 02, 03, etc; dentro de cada dia possuo um arquivo do sistema, ao qual é modificado diariamente, até aqui beleza, porém cada vez que esse arquivo é modificado ele mexe com a criação do diretório, a pergunta é, o find conforme comando que você colocou acima irá apagar o diretório meses, incluindo o subdiretório dia e arquivos ? Pois em outra rotina de backup que possuo, como tenho uma rotina de backup diário, eu possuo uma rotina com o find que mantém os dois últimos backups para que não ocupe muito espaço no disco do servidor.

find /diretorio -ctime +1 -exec rm -rf "{}" \;

Funciona corretamente, visto que o backup é criado diariamente sem sofrer quaisquer modificações.

Agora no caso acima não estou conseguindo ver como montar essa rotina.


Clemer


4. Re: Exclusão de diretórios por mês

Tairone Seremeta
tairone_seremeta

(usa Debian)

Enviado em 23/05/2016 - 10:53h

Bom dia,
aqui na minha empresa utilizo a função
/bin/find /backup/* -mtime +90 -exec rm -frv {} \;

Assim ele remove tudo que esta acima de 90 dias no diretorio /backup

Funciona perfeitamente. Espero ter ajudado.



5. Re: Exclusão de diretórios por mês

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 23/05/2016 - 10:54h

Cara, ele só apaga os diretórios se vc quiser, pois é possível especificar no find se quer localizar somente arquivos ou somente diretórios ("-type f" e "-type d").
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


6. Re: Exclusão de diretórios por mês

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/05/2016 - 11:14h

Senhores, na verdade eu preciso que ele apague o diretório levando os subdiretórios e arquivos, porém, o find irá pegar a data de modificação do que? arquivos ou subdiretório e diretório ? Por exemplo, se eu setar:

Estrutura: Ano(2016) / Meses(01,02, etc) / Dias(01, 02, 03, etc) /arquivos dentro de cada diretório dia

find /diretório_ano/diretórios_meses -type d -ctime +90 -exec rm -r "{}" \;

Ele apagaria pegando a data do diretório Mês ? excluindo diretórios com mais de 90 dias, mantendo então os 3 últimos meses ?


Clemer


7. Re: Exclusão de diretórios por mês

Tairone Seremeta
tairone_seremeta

(usa Debian)

Enviado em 23/05/2016 - 11:17h

Ele exclui conforme a data de criação do diretório, mas se houve atualização nesse diretório ele altera a data.


8. Re: Exclusão de diretórios por mês

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/05/2016 - 11:22h

Problema que esses diretórios são criados com datas de forma estranha digamos, por exemplo Mar teve criação dia 31, mais não poderia, logo que temos subdiretórios com dias de 01 até 31, ABR data de criação 29, etc.


9. Re: Exclusão de diretórios por mês

Tairone Seremeta
tairone_seremeta

(usa Debian)

Enviado em 24/05/2016 - 07:55h

Esse comando ele não busca pelo nome que está no diretorio e sim pela data de criação ou modificação do diretorio. Faça o backup do diretorio e teste esse comando.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts