Olá a todos.
Tenho um pequeno script agendado no serviço CRON para efectuar backup de um determinado directório do meu servidor. Este script também envia o log do backup para um determinado directório.
Eu necessitava de um outro script que remove-se automaticamente os ficheiros logs com data de criação superior a 15 dias para evitar de o ter de fazer manualmente?
Alguém pode ajudar-me a criar um script para efectuar automaticamente esta acção?
(20-08-2010 12:41)Apaxe Escreveu: [ -> ]Eu necessitava de um outro script que remove-se automaticamente os ficheiros logs com data de criação superior a 15 dias para evitar de o ter de fazer manualmente?
Lista ficheiros (normais e directorias) que tenham sido modificados (mtime) 'a 15 dias.
-mtime igual a
0 significa
0h0m e
23h59m,
1 24:00 e
47:59, etc... Para testar:
Código:
find . -mtime +14 -exec ls -l {} \;
Quando estiver a funcionar correctamente no teu sistema, altera
ls -l por
rm, para apagar os ficheiros.
{} corresponde ao ficheiro e
\; e' o separador para o
find.
-ctime - criado
-atime - acedido
Código:
find . -mtime +14 -exec rm {} \;
Se queres apenas ficheiros normais, usa
-type f
Fiquem Bem!
Elias_REC, obrigado pela atenção.
Criei então um script com o seguinte codigo:
#!/bin/bash
find /home/administrador/Logs/ -mtime +15 -exec rm {} \;
Ele remove os ficheiros como eu pretendo. Fiz tambem a experiencia para ver se ele remove pastas o que não aconteceu.
Pergunto o que tenho de acrescentar para ele remover tambem pastas?
Obrigado
(21-08-2010 12:11)Apaxe Escreveu: [ -> ]#!/bin/bash
find /home/administrador/Logs/ -mtime +15 -exec rm {} \;
Ele remove os ficheiros como eu pretendo. Fiz tambem a experiencia para ver se ele remove pastas o que não aconteceu.
Pergunto o que tenho de acrescentar para ele remover tambem pastas?
O problema esta' no comando
rm. Para forca-lo a apagar directorias precisas de
-rf (recursive, force). O problema e' que tambem apaga todos os ficheiros e sub-directorias dentro da directoria.
rmdir apaga directorias que estejam vazias.
De forma simples, poderias usar o seguinte:
Código:
find "$DIR" -mtime +15 -exec rm -rf {} \;
Outra forma com algumas melhorias:
Código:
#!/bin/sh
# script [directoria] [mtime]
DIR=${1-/home/administrador/Logs/}
OLD=${2-+15}
# apaga directorias antigas e vazias. 'echo' e' para testares o resultado
find "$DIR" -type d -mtime $OLD -exec echo rmdir {} \;
# apaga ficheiros antigos
find "$DIR" -type f -mtime $OLD -exec echo rm {} \;
Fiquem Bem!
Efectivamente o script remove os ficheiros, as directorias vazias e também o conteúdo das directorias não vazias.
O engraçado é que como elas passaram a vazias numa nova execução do script este não as remove !!!
Obrigado.
(22-08-2010 12:24)Apaxe Escreveu: [ -> ]Efectivamente o script remove os ficheiros, as directorias vazias e também o conteúdo das directorias não vazias.
O engraçado é que como elas passaram a vazias numa nova execução do script este não as remove !!!
Parece que tens que mostrar a estrutura do que esta' na directoria dos logs. Numa nova execucao, ate' o
rm apaga uma directoria vazia.
Fiquem Bem!
Elias, nos testes que fiz o "rm" não removeu as directorias.
Obrigado.
para remover directorias precisas de ter 'rm -r'
cumps