Logrotate acrescenta “1” ao final do arquivo compactado

1

Eu tenho um script que roda como um cronjob a cada 30 minutos e pega o mysqldump de algumas tabelas. Os arquivos de despejo são armazenados em / var / log / as

/var/log/mysqldump/dbname/tablename/2014-06-15-18-30-dbname-tablename.sql
/var/log/mysqldump/dbname2/tablename2/2014-06-15-19-00-dbname2-tablename2.sql

Estou usando o logrotate para rotação de arquivos, o arquivo de configuração tem a seguinte estrutura:

/var/log/mysqldump/dbname/tablename/*.sql {
  daily
  rotate 30
  compress
  nocreate
}

Agora, meu problema é que, embora o logrotate funcione bem, mas está anexando "1" ou "2" ao final dos arquivos compactados, por exemplo, é isso que eu tenho

/var/log/mysqldump/dbname2/tablename2/2014-06-15-19-30-dbname2-tablename2.sql.1.gz
/var/log/mysqldump/dbname1/tablename1/2014-06-15-19-00-dbname1-tablename1.sql.2.gz

Eu executo logrotate de dentro do script como

logrotate -f /path/to/mysqldump-logrotate.conf

O que estou fazendo de errado aqui?

    
por reflektor 18.06.2014 / 11:27

4 respostas

3

Logrotate será o padrão para adicionar um número ao arquivo. Isso é para que, se for usado para nomes de arquivos como, por exemplo, /var/log/messages , os logs rotacionados serão nomeados /var/log/messages.0 e /var/log/messages.1 etc.

Sua situação é um pouco diferente, já que você já tem um registro de data e hora no nome do arquivo, de modo que a extensão é desnecessária. O Logrotate não tem a opção de não usar uma extensão - mas há uma alternativa que você pode usar.

A alternativa para usar uma sequência numérica é usar uma data / registro de data e hora. Isso é padronizado como -%Y%m%D , por exemplo %código%. Mas você pode configurar a aparência da string - que, no seu caso, seria uma string vazia. Você faria isso usando a seguinte configuração:

dateext          # to use dateformat string instead of sequential numbers
dateformat ''    # to use an empty string as the dateext
    
por 18.06.2014 / 11:40
3

Você não está fazendo nada errado, este é o comportamento padrão e esperado. Se você quiser uma extensão diferente, por exemplo, uma data, poderá especificar dateext

dateext Archive old versions of log files adding a daily extension like YYYYMMDD instead of simply adding a number. The extension may be configured using the dateformat option.

Do que foi dito acima, você também pode ver que o comportamento defaut deve ser simply adding a number .

    
por 18.06.2014 / 11:33
2

Você tem a opção rotate 30 em sua configuração, o que significa que 30 versões mais antigas são mantidas antes de serem excluídas. Este número é como logrotate diferencia as versões. Então, na verdade, você não está fazendo nada de errado e o programa se comporta como planejado.

    
por 18.06.2014 / 11:32
1

Este é um comportamento normal para o logrotate como você o descreveu.

Normalmente, você deseja logar seus arquivos de log não via script, mas através de cronjob (s).

Para gzipar os arquivos via logrotate, você não pode incluir a data e deixar que o logrotate manipule o dateext.

Portanto, para uma "solução" para o seu problema, você pode usar as opções de logrotate

dateext 

e deixe de escrever o dia no seu nome de arquivo.

Isso "removeria" o 1 que você vê no nome do arquivo.

    
por 18.06.2014 / 11:34