文件的日志旋转

文件的日志旋转

我想旋转一个文件并将旋转后的文件放置在一个名为“backup”的新目录中。日志的轮换工作正常,轮换的文件未移动到备份目录内。请在下面找到我使用过的脚本。

注意:只有最近旋转的压缩为 .gz 格式的文件不会移动到备份文件夹中,就像您保留任何其他 .gz 格式的 zip 文件一样,它会被移动。

脚本 -

compress    

/data_gpfs/engageone/active-drive/E-Archive/SystemData/logrotation_test/test.log {
        daily
        copytruncate
        create 775 root wsdepl
        dateext
     dateformat %Y-%m-%d
        rotate 30
     maxage 30
        missingok
        #notifempty 
     sharedscripts
     postrotate
        mv /data_gpfs/engageone/active-drive/E-Archive/SystemData/logrotation_test/*.gz /data_gpfs/engageone/active-drive/E-Archive/SystemData/logrotation_test/backup
     endscript
}

答案1

logrotate(8):

它允许自动旋转、压缩、移除和邮寄日志文件。 [...] postrotate 和 endscript 之间的行(两者都必须单独出现在行上)日志文件轮转后执行。

换句话说:postrotate发生在旋转之后、压缩之前。当您mv拨打电话时,您的日志的 gzip 存档尚不存在。

logrotate不提供postcompress挂钩,但是您可以:

  1. 请改用lastaction钩子。
  2. 处理脚本/代码中的压缩postrotate。创建一个 shell 脚本来压缩文件,然后移动它,并在您的postrotate部分中调用它。compress在这种情况下,不要忘记禁用该选项。
  3. compresscmd使用和执行类似的操作uncompresscmd,使用自定义压缩/解压缩脚本,在必要时负责定位和移动文件。
  4. 独立于 CRON 作业进行移动logrotate,或postrotate使用at (这并不是很干净,因为你无法真正预测压缩时间)

欲了解更多信息,请查看这里logrotate的工作流程一开始可能有点难以理解,但是一旦掌握了它所需要的步骤,一切都会顺利进行;)您可能还对以下 SE 问题感兴趣:

相关内容