Limpeza: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
(Sem diferença)
|
Edição atual tal como às 12h31min de 14 de dezembro de 2017
Esta rotina garante que não haverá duas ou mais execuções simultâneas.
Ele irá liberar espaço livre no filesystem para manter a maior quantidade de dados possível.
Sempre tentará apagar o mínimo a fim de garantir a reserva de espaço em disco livre especificado para o filesystem/diretório.
Assim, ele irá apagar arquivos mais antigos que 90 dias (90 * 24 * 60 = 129600 minutos), mas não mais novos que 90 minutos(linha 5 do código).
Politica de limpeza é executada somente se espaço livre for inferior a marca d'água, 5000000 KB.
#!/bin/bash
export PIDFILE=/root/scripts/pid.run
function LIMPEZA() {
echo $(date +"%Y-%m-%d_%H-%M_%S")\;Iniciando limpeza de $1 mais antigos que $2 minutos
if [ $2 -le 90 ]
then
echo Nao é possivel apagar arquivos mais antigos que $2 minutos
exit 1
else
df -Pk $1 2>/dev/null| \
grep ^\/ | \
while read filesystem total usado disponivel porcentagem mountpoint
do
if [ $disponivel -lt $3 ]
then
find $1 -type f -mmin +$2 -exec rm -fr {} \;
#sleep 0.005
LIMPEZA $1 $(expr $2 - 30) $3
else
echo $(date +"%Y-%m-%d_%H-%M_%S")\;Nada para fazer, espaço livre em disco maior que $(expr $3 \/ 1024)MB
fi
done
fi
}
function PROCESS() {
PID=$(cat $PIDFILE)
ps -p $PID 2> /dev/null > /dev/null
RETURN=$?
if [ $RETURN -eq 0 ]
then
RETURN=$(ps -p $PID 2> /dev/null| awk '{print $4}' | grep $(echo ^$0 | tr '\/' '\n' | tail -n 1) | wc -l )
if [ $RETURN -eq 1 ]
then
echo Parei por aqui.
echo Outra copia da rotina esta em execucao no momento
exit 1
else
echo $$ > $PIDFILE
fi
else
echo $$ > $PIDFILE
fi
}
PROCESS
LIMPEZA /backup/archive 129600 5000000