signout
(usa Slackware)
Enviado em 24/02/2011 - 06:51h
Boas...
Segundo o man do logrotate:
- Dessa forma vai rotacionar os arquivos já existentes?
Sim, inclusive se voce rotacionar os arquivos e deixar nos mesmos diretorios, eles serão rotacionados e comprimidos novamente...
- Ele vai rotacionar todo mês ou vai rotacionar todos arquivos que pertecem a aquele mês?
Rotaciona tendo como base o mes, se os arquivos antigos ficarem no mesmo diretorio, entao, ele sempre rotacionara tudo...
- O que significa esse rotate 1? Ele diz que é ó numero de rotates antes de apagar o arquivo. Ficou meio vago pra mim.
se voce tem o arquivo xpto na primeira vez ele sera rotacionado para xpto.1.gz, na segunda vez, o xpto.1.gz sera apagado e sera criado um novo arquivo xpto.1.gz ou seja, mantem somente uma versão do arquivo.
Se a idéia eh fazer um backup creio que a sugestão do douglasfirm seja a melhor saida.
Há um tempo atrás, pediram para fazer um script de backup para logs, que deixasse somente o arquivo atual + 2 (total de 3 dias), segue o mesmo, basta alterar as variaveis:
**********************************************************************************
#
#!/bin/bash
#
# Script para: Compactacao de Logs
# Criado em: 26/06/2009
#
##########################
# #
# Definicao de Variaveis #
# #
##########################
DIAS_RET=`date --date "2 day ago" +%Y%m%d`
ANO=`date +%Y`
MES=`date +%b`
DATA_FULL=`date +%F`
DIR_LOGS=/logs_jboss
DIR_BACKUP=/backup_deploy/LOGS_
ARQ_LOG=/backup_deploy/Compacta_logs_$DATA_FULL.log
ERR_LOG=/backup_deploy/Compacta_logs_$DATA_FULL.err
GZIP=/bin/gzip
MKDIR=/bin/mkdir
RM=/bin/rm
#####################################################################
# #
# Cria Diretorios #
# #
# 1 - Verifica existencia de diretorio de backup #
# 2 - Caso ao exista, cria diretorio de backup baseado no ano #
# (200X) e verifica existencia de subdiretorio baseado no mes #
# 3 - Caso nao exista, cria subdiretorio de backup #
# baseado no mes (Jan..Dec) da log #
# #
#####################################################################
cria_dir (){
if [ -n $1 ];then
MES_LOG_LIT=`date --date "$1" +%b`
if [ ! -d $DIR_BACKUP$ANO ];then
echo "Criando Diretorio " $DIR_BACKUP$ANO >> $ARQ_LOG
$MKDIR $DIR_BACKUP$ANO 2>> $ERR_LOG
if [ $? -ne 0 ];then
echo "ao foi possivel criar diretorio $DIR_BACKUP$ANO verifique o erro na linha anterior" >>$ERR_LOG
exit 2
else
echo "Diretorio criado com sucesso:" $DIR_BACKUP$ANO >> $ARQ_LOG
fi
fi
if [ ! -d $DIR_BACKUP$ANO/$MES_LOG_LIT ];then
echo "cria subdir"
echo "Criando Diretorio " $DIR_BACKUP$ANO/$MES_LOG_LIT >> $ARQ_LOG
$MKDIR $DIR_BACKUP$ANO/$MES_LOG_LIT 2>> $ERR_LOG
if [ $? -ne 0 ];then
echo "Nao foi possivel criar diretorio $DIR_BACKUP$ANO/$MES_LOG_LIT verifique o erro na linha anterior" >>$ERR_LOG
exit 2
else
echo "Diretorio criado com sucesso:" $DIR_BACKUP$ANO/$MES_LOG_LIT >> $ARQ_LOG
fi
fi
else
echo "Erro ao retornar mes da log" >>$ERR_LOG
exit 1
fi
}
#####################################################################
# #
# Compacta Logs #
# #
# 1 - Compacta logs utilizando comando gzip -c log > arquivo.gz #
# este parametro permite criar copia zipada do arquivo #
# sem que o original seja perdido #
# 2 - O backup sera efetuado no diretorio definido por #
# $DIR_BACKUP$ANO/$MES_LOG_LIT #
# 3 - Apos compactacao, se codigo de retorno for 0 (OK) #
# deleta o arquivo de log #
# #
#####################################################################
compacta_logs (){
for LOGS in $1
do
echo "Compactando log" $LOGS >> $ARQ_LOG
$GZIP -c $DIR_LOGS/$LOGS > $DIR_BACKUP$ANO/$MES_LOG_LIT/$LOGS.gz 2>> $ERR_LOG
if [ $? -eq 0 ];then
echo "Compactacao efetuada com sucesso" >> $ARQ_LOG
echo "Removendo log original:" $DIR_LOGS/$LOGS >> $ARQ_LOG
$RM $DIR_LOGS/$LOGS 2>> $ERR_LOG
if [ $? -eq 0 ];then
echo "Log Removida com sucesso" >> $ARQ_LOG
else
echo "Erro na remocao da log $LOG, verifique log de erro" $ERR_LOG >> $ARQ_LOG
fi
else
echo "Erro na compactacao da log $LOG verifique log de erro" $ERR_LOG >> $ARQ_LOG
exit 3
fi
done
}
#####################################################################
# #
# Lista Logs #
# #
# 1 - Lista as logs do diretorio definido por DIR_LOGS #
# 2 - Ordena por data de criacao (--sort=time) #
# 3 - Compara Dia da log com o dia de retencao definido por DIA_RET #
# (quantas logs serao deixadas no diretorio original #
# atualmente definido como 3 - atual + 2) #
# 4 - Caso atenda ao item 3, funcao cria_dir sera acionada #
# 5 - Caso nao haja logs, grava no arquivo definido por ARQ_LOG #
# 6 - Caso ocorra algum erro, grava no arquivo definido por ERR_LOG #
# #
#####################################################################
echo "Compactacao de Logs -- " $DATA_FULL > $ARQ_LOG
echo "Compactacao de Logs Erros -- " $DATA_FULL > $ERR_LOG
for LOGS in `ls -l --sort=time $DIR_LOGS | awk '{print $6 "->" $8}' 2>>$ERR_LOG`
do
#echo $LOGS
DIA_LOG=`echo ${LOGS}| cut -f3 -d"-"`
MES_LOG=`echo ${LOGS}| cut -f2 -d"-"`
ANO_LOG=`echo ${LOGS}| cut -f1 -d"-"`
NOM_LOG=`echo ${LOGS}| cut -f2 -d">"`
DATA_FULL_LOG=$ANO_LOG$MES_LOG$DIA_LOG
if [ $DATA_FULL_LOG -lt $DIAS_RET ];then
cria_dir $ANO_LOG$MES_LOG$DIA_LOG
compacta_logs $NOM_LOG
fi
done
*****************************************************************************************
Espero que ajude.
[]s
Signout