Logrotate在压缩文件的末尾添加“1”

我有一个脚本,每30分钟运行一次cronjob,并使用一些表的mysqldump。 转储文件存储在/ 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 

我使用logrotate进行文件旋转,configuration文件具有以下结构:

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

现在我的问题是,尽pipelogrotate工作正常,但它的gzip文件的末尾附加“1”或“2”,例如这是我有

 /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 

我从脚本内执行logrotate

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

我在这里做错了什么?

Logrotate将默认添加一个数字到文件中。 这是如此,如果它用于如/var/log/messages文件名,旋转日志将被命名为/var/log/messages.0/var/log/messages.1

你的情况有些不同,因为你已经在文件名中有一个时间戳,所以扩展是不必要的。 Logrotate没有select不使用扩展名 – 但是可以使用一种解决方法。

使用数字序列的替代方法是使用date/时间戳。 默认为-%Y%m%D ,例如-20140618 。 但是你可以configurationstring应该是什么样子 – 在你的情况下是一个空string。 你可以使用下面的configuration来做到这一点:

 dateext # to use dateformat string instead of sequential numbers dateformat '' # to use an empty string as the dateext 

你没有做错什么这是默认和预期的行为。 如果你想要一个不同的扩展名,例如date,那么你可以指定dateext

dateext归档旧版本的日志文件,添加像YYYYMMDD这样的日常扩展,而不是简单地添加一个数字。 该扩展可以使用dateformat选项进行configuration。

从上面你也可以看到,预期的违规行为simply adding a number

您可以在您的configuration中selectrotate 30 ,这意味着30个旧版本在删除之前保留。 这个数字是如何logrotate区分版本。 所以,实际上你没有做错什么,程序的行为如同devise。

正如你所描述的,这是logrotate的正常行为。

通常你会想通过cronjob(s)而不是通过脚本来login日志文件。

对于通过logrotate来压缩文件,你不能包含date,而是让logrotate处理date文本。

所以为了解决您的问题,您可以使用logrotate选项

 dateext 

并跳过写入你的文件名的一天。

这将“删除”您在文件名中看到的1。