Como continuamente fazer backup de arquivos de log?

5

Eu tenho alguns aplicativos no Linux que criam arquivos de log de cerca de 41 MB cada. O aplicativo alterna de log.1 para log.2 e inicia a substituição de log.2 quando esses 41 MB forem concluídos no arquivo log.1 .

Eu quero fazer o backup desses arquivos da mesma forma que sempre que o novo arquivo log.2 atingir o tamanho maior que 1MB é necessário fazer backup (gzip e armazenar em outro local) de outro arquivo ( log.1 ). / p>

Eu tenho usado um script que pega o backup de um arquivo sempre que ele atinge 41MB, mas o problema aqui é que às vezes esse backup de arquivo de 41MB é processado pelo script enquanto os dados ainda estão sendo gravados no mesmo arquivo a uma taxa enorme . Por causa disso, alguns segundos de dados de log são perdidos, o que é a razão pela qual eu estou tentando a maneira alternativa de fazer backup de outro arquivo quando o novo arquivo atinge 1 MB ou algo assim, para ter certeza de que o outro arquivo acabou de gravar. p>

Alguma ideia de como faço isso?

    
por Ankit Vashistha 27.12.2012 / 12:21

2 respostas

1

Isto pode ser feito através do logrotate, veja abaixo o exemplo dos logs do apache

Passo 1 # Primeiro certifique-se logrotate está instalado em seu sistema, por padrão está disponível em quase toda a distribuição do Linux

Passo 2 # Crie /etc/logrotate_apache.conf como abaixo

#-------------------------------------------------------------------------------------
/var/log/httpd/*log {
    missingok
    minsize 1M
    create
    compress
    rotate 1
    lastaction
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
        Log_dir="/var/log/httpd/Apache_$(date +%F)/"
        # move to other location
        [[ ! -d "${Log_dir}" ]] && /bin/mkdir "${Log_dir}" &&  /bin/mv /var/log/httpd/*.gz "${Log_dir}"
    endscript
}

# system-specific logs may be also be configured here.
#-------------------------------------------------------------------------------------

Etapa 3 # Definir a tarefa Cron conforme abaixo

00 * * * * /usr/sbin/logrotate -f /etc/logrotate_apache.conf
    
por 27.12.2012 / 14:53
0

Você pode tentar logrotate , Alguns exemplos são mencionados aqui

A opção tamanho permitirá que você gire o log quando ele atingir um tamanho especificado, digamos 41MB.
Use a opção postrotate para executar um script personalizado que você pode usar para transferir o arquivo de log rotacionado para outro local.

    
por 27.12.2012 / 13:59