我想旋转一个文件并将旋转后的文件放置在一个名为“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
它允许自动旋转、压缩、移除和邮寄日志文件。 [...] postrotate 和 endscript 之间的行(两者都必须单独出现在行上)日志文件轮转后执行。
换句话说:postrotate
发生在旋转之后、压缩之前。当您mv
拨打电话时,您的日志的 gzip 存档尚不存在。
logrotate
不提供postcompress
挂钩,但是您可以:
- 请改用
lastaction
钩子。 - 处理脚本/代码中的压缩
postrotate
。创建一个 shell 脚本来压缩文件,然后移动它,并在您的postrotate
部分中调用它。compress
在这种情况下,不要忘记禁用该选项。 compresscmd
使用和执行类似的操作uncompresscmd
,使用自定义压缩/解压缩脚本,在必要时负责定位和移动文件。- 独立于 CRON 作业进行移动
logrotate
,或postrotate
使用at
(这并不是很干净,因为你无法真正预测压缩时间)。
欲了解更多信息,请查看这里。logrotate
的工作流程一开始可能有点难以理解,但是一旦掌握了它所需要的步骤,一切都会顺利进行;)您可能还对以下 SE 问题感兴趣: