Enviado em 09/10/2015 - 09:13h
E ai pessoal, será que alguem consegue me ajudar. Na empresa onde trabalho tenho um processo que roda todos os dias bkp de meu banco de dados com nome bkp_kw_xxxx_ddmm.tar.bz2, e fiz agora um script para apagar os backups com mais de 20 dias da data corrente, o problema é que ele ta interpletando mal o meu if e apagando todo mundo e não só os bkps que tenhao mais de 20 dias, eu pego a data do nome do arquivo mesmo. segue script:
LOG="/var/log/logbkp_1001.txt"
DIR_BKP="/u03/1001"
DATA_ALVO="$(date -d '-20 days' '+%d%m')" # - 30 dias após a data atual
DIA_ATUAL=`date +%d-%m`
ARQUIVO="$(find /u03/1001/ -name '*.tar.bz2')"
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 -rvf $ARQUIVO
fi
done
echo "Fim: `date +%d-%m-%y_%H:%M:%S`" >> ${LOG}
se alguem puder me ajudar agradeço.
LOG="/var/log/logbkp_1001.txt"
DIR_BKP="/u03/1001"
DATA_ALVO="$(date -d '-20 days' '+%d%m')" # - 30 dias após a data atual
DIA_ATUAL=`date +%d-%m`
ARQUIVO="$(find /u03/1001/ -name '*.tar.bz2')"
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 -rvf $ARQUIVO
fi
done
echo "Fim: `date +%d-%m-%y_%H:%M:%S`" >> ${LOG}
se alguem puder me ajudar agradeço.