DELETAR arquivos a X semanas passadas
Olá Galera,
Fiz um script que deleta arquivos de um diretório específico com data de criação a X semanas passadas.
Não sei se no linux já tem alguma ferramenta pronta para isso ou se alguém já fez algo semelhante, mas valeu pela diversão...
Abracos.
Fiz um script que deleta arquivos de um diretório específico com data de criação a X semanas passadas.
Não sei se no linux já tem alguma ferramenta pronta para isso ou se alguém já fez algo semelhante, mas valeu pela diversão...
Abracos.
Descrição
Olá Galera,
Fiz um script que deleta arquivos de um diretório específico com data de criação a X semanas passadas.
Não sei se no linux já tem alguma ferramenta pronta para isso ou se alguém já fez algo semelhante, mas valeu pela diversão...
Abracos.
Fiz um script que deleta arquivos de um diretório específico com data de criação a X semanas passadas.
Não sei se no linux já tem alguma ferramenta pronta para isso ou se alguém já fez algo semelhante, mas valeu pela diversão...
Abracos.
#!/bin/bash
## Forma de trabalhar
## ./deleta.sh caminhoARQUIVOS camilhoLOG email QuantidesDeSemanaPassadasdaAtual
## Pode haver problemas com permissoes por exemplo vc tentar executar
## este script com um usuario nao root tentando deletar dentro
## de uma pasta que somente o root em acesso.
if ([ -z $1 ]); #|| [ -z $2 ] || [ -z $3 ] || [ -z $4 ]);
then
clear
echo "Voce deve passar o comando com 4 parametros";
echo "Ex. ./deleta.sh caminho caminhodolog email qtddesemanas";
exit
fi
clear
hora=`date +%H:%M-%D`
diretorio=$1
dias=`date +%Y%W`
log=$2
email=$3
qtd=$4
echo "Diretorio a ser varrido:" $diretorio ":: Diretorio do log: " $log;
dias=`expr $dias - $qtd`
echo "Quantida solicitadas:" $qtd ":: Semana a ser excluida: " $dias;
echo "Email do log:" $email;
declare -a arquivos
arquivos=(`find $diretorio -type f -printf "%TY%TW:%p\\n"`)
x=0;
while [ $x != ${#arquivos[@]} ]
do
echo "Elemento numero"
echo $x;
echo "Nome do arquivo dentro do array"
echo ${arquivos[$x]};
cortarsemana=`echo ${arquivos[$x]} | cut -f 1 -d :`
if [ $cortarsemana == $dias ]; then
cortar=`echo ${arquivos[$x]} | cut -f 2 -d :`
echo "EXCLUINDO: " $cortar;
rm $cortar -f
RETVAL=$?
if [ $RETVAL = "1" ]
then
echo "Problemas ao deltar arquivo" $cortar;
echo $hora " -- ERRO -- Problemas ao deletar" $cortar >> $log/DELETA_LOG;
echo $hora " -- ERRO -- Problemas ao deletar" $cortar | mail -s "Testando" $email;
else
if [ $RETVAL = "0" ]
then
echo "Exclusao com sucesso do arquivo: " $cortar;
echo $hora " -- PODE -- Exclusao feita no arquivo:" $cortar >> $log/DELETA_LOG;
echo $hora " -- PODE -- Exclusao feita no arquivo:" $cortar | mail -s "Testando" $email;
fi
fi
else
echo "Nao remover pq nao é de uma semana atras";
echo $hora " -- NAO -- Nao remove porque nao esta dentro da data:" $cortar >> $log/DELETA_LOG;
echo $hora " -- NAO -- Nao remove porque nao esta dentro da data:" $cortar | mail -s "Testando" $email;
fi
let "x = x +1"
done
exit
}
existe um parametro no "find" que já te tras os arquivos que possuem + de X dias. Tipo:
find . -mtime +7
onde +7 seria a quantidade de dias desde a criação ou ultima alteração do arquivo: MAIS DE 7 DIAS
para conseguir adequa-lo a um script, use o " | cut " junto ao "find". Eu fiz assim:
find . -mtime +2 |cut -b3-50
[]s