rubis
(usa CentOS)
Enviado em 09/10/2015 - 14:53h
guilhermisaac escreveu:
Cara bem no começo quando tu faz a procura dos arquivos vc armezena a saida de todos os arquivos na variavel ARQUIVOS
E la na condição if tu deleta todos os arquivos que estão armazenados na variavel ARQUIVOS, a condição só trata o seguinte:
se a data alvo for menor ou igual a data do arquivo eu removo tudo que foi armazenado na variavel ARQUIVO, ou seja tudo que tenha a extensão .tar.bz2
vc poderia filtrar ela, dizendo pra ela armazenar apenas os arquivos a data -20 dias
ARQUIVO="$(find /u03/1001/ -name '*.tar.bz2' | grep `echo $DATA_ALVO`)"
ai vc armazena nessa variavel apenas os arquivos -20 dias
ai vc da uma enxugada no script e coloca no cron pra executar todos os dias e só alegria
--
Att
Guilherme Isaac
E ai Guilherme, cara tentei fazer como você me disse. só para ti imaginar o cenário como fiz aqui para testar.
no meu diretorio onde fica os bkp criei os bkps com o padrao de nome que esta configurado, tenho os seguintes arquivos: bkp_kw_1001_2008.tar.bz2 bkp_kw_1001_2108.tar.bz2 bkp_kw_1001_2208.tar.bz2
bkp_kw_1001_2009.tar.bz2 bkp_kw_1001_2109.tar.bz2 bkp_kw_1001_2308.tar.bz2
fiz a alteração como me indicou e ficou assim o script:
ARQUIVO="$(find /u03/1001/ -name '*.tar.bz2'| grep `echo $DATA_ALVO`)"
NOME_ARQUIVO=${ARQUIVO##*/}
DATA_ARQUIVO=${NOME_ARQUIVO:12:4}
cd ${DIR_BKP}
echo "Inicio: `date +%d-%m-%y_%H:%M:%S`" >> ${LOG}
echo Relatorio de Limpeza de ${DIA_ATUAL} > ${LOG}
echo "-----------------------------------" >> ${LOG}
echo "${ARQUIVO}" >> ${LOG}
echo "-----------------------------------" >> ${LOG}
for ARQUIVO in $(find /u03/1001 -name '*.tar.bz2')
do
NOME_ARQUIVO=${ARQUIVO##*/}
DATA_ARQUIVO=${NOME_ARQUIVO:12:4} # pega a data do nome do arquivo, posicao 18(17) 4 digitos
# se a data_alvo for maior ou igual a data do arquivo
echo "Apagados os seguintes arquivos" >> ${LOG}
echo "-----------------------------------" >> ${LOG}
echo "$ARQUIVO " >> ${LOG}
echo "-----------------------------------" >> ${LOG}
if [ $DATA_ALVO -ge $DATA_ARQUIVO ]
then
rm -rf $ARQUIVO
fi
done
echo "Fim: `date +%d-%m-%y_%H:%M:%S`" >> ${LOG}
quando rodo ele em modo debug ele me mostra o seguinte:
+ echo 'Inicio: 09-10-15_14:34:19'
+ echo Relatorio de Limpeza de 09-10
+ echo -----------------------------------
+ echo ''
+ echo -----------------------------------
++ find /u03/1001 -name '*.tar.bz2'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2009.tar.bz2
+ DATA_ARQUIVO=2009
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2009.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2009 ']'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2108.tar.bz2
+ DATA_ARQUIVO=2108
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2108.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2108 ']'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2109.tar.bz2
+ DATA_ARQUIVO=2109
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2109.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2109 ']'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2008.tar.bz2
+ DATA_ARQUIVO=2008
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2008.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2008 ']'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2308.tar.bz2
+ DATA_ARQUIVO=2308
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2308.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2308 ']'
+ for ARQUIVO in '$(find /u03/1001 -name '\''*.tar.bz2'\'')'
+ NOME_ARQUIVO=bkp_kw_1001_2208.tar.bz2
+ DATA_ARQUIVO=2208
+ echo 'Apagados os seguintes arquivos'
+ echo -----------------------------------
+ echo '/u03/1001/bkp_kw_1001_2208.tar.bz2 '
+ echo -----------------------------------
+ '[' 1909 -ge 2208 ']'
++ date +%d-%m-%y_%H:%M:%S
+ echo 'Fim: 09-10-15_14:34:19'
e no log ele ta colocando todos os arquivos sitados acima como excluidos, sende que tem arquivos que nao tem 20 dias, porem na verdade ele nem exclui os arquivos desta vez. agora ele nao exclui nada. hehe