Script para excluir arquivos com mais de 6 meses

12

Configurando um trabalho cron uma vez por mês para iniciar um script.

o script é rotacionar um arquivo todos os meses à medida que se torna grande demais e renomear o antigo. quando um arquivo tem mais de seis meses, eu queria que ele fosse excluído.

Procurando executar esse script uma vez por mês. É possível excluir o antigo?

Informe-me se isso não estiver claro o suficiente.

Scott Marriott
fonte
11
Por que não usar apenas logrotate?
Michael Hampton
@scottmarriott sim, Sr. Hampton está certo, a funcionalidade que você descreveu é basicamente a coisa exata que o logrotate faz.
Bratchley
Sim, eu acabei de dar uma boa olhada no logrotate faz sentido para todos
scott marriott 29/13
@ MichaelHampton, você deve fazer disso uma resposta.
Evilsoup

Respostas:

20

Você pode começar com isso:

find /your/file -mtime +182 -exec rm {} +

Onde +182estão a quantidade de dias.

ramonovski
fonte
Obrigado por isso, pode ter um jogo com ele, mas eu talvez logrotate pode ser a melhor opção
scott Marriott
@ Jordanm alguma idéia por que isso pode não funcionar?
scott marriott
ApplicationServer / logs / TestClone01 $ ls -ltr total 3320 1048458 13 dez 09:46 SystemOut_12.12.13_09.46.29.log 28 de maio 12:44 SystemOut.log.2013-05-28-12: 44: 52 71 30 de maio 08: 57 SystemOut.log.2013-05-30-08: 57: 22 48432 30 de maio 09:16 SystemOut.log no_env): / usr / websphere6 / was61TE_LV2 / ApplicationServer / logs / TestClone01 $ find SystemOut.log -mtime +1 - exec rm {} + find: 0652-083 Não é possível executar :: Um arquivo ou diretório no nome do caminho não existe.
scott marriott
Eu mudei o número de dias para 1
scott marriott
@scottmarriott Nem todas as versões de findsuporte +/-para -mtime. Qual SO e versão findvocê possui?
Jordanm #
2

Você pode apenas usar logrotate. Ele já está disponível na maioria dos sistemas Linux e muitos pacotes já possuem scripts de rotação de log pré-configurados, ou você pode ajustá-los ou escrever seus próprios.

Michael Hampton
fonte