如何在唯一的 file.tar.gz 中轮换旧日志文件?

如何在唯一的 file.tar.gz 中轮换旧日志文件?

如何在唯一的 file.tar.gz 中轮换 30 天前的所有日志文件并删除存档中插入的文件?

前:

a.log // older than 30days
b.log // older than 30days
c.log // older than 20 days

后:

backup.tgz
c.log

答案1

如果您使用的是 Linux 记录器,并且可以将轮换配置添加到/etc/logrotate.d您可以在其中指定大小、格式等的目录...

例子:

/var/log/test.log {
    rotate 30
    weekly
    size=30k
    compress 
}

这里有一个备忘单对于脚本。

答案2

您可以执行以下操作:

find . -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -

和:

  • find选项:
    • -name '*log' -mtime +30:选择超过 30 天的日志文件
    • -print0:在标准输出上打印完整的文件名,后跟一个空字符
  • tar选项:
    • --remove-files:将文件添加到存档后删除它们
    • --null:读取空终止名称(由 发送find -print0
    • -T -find:从标准输入(的输出)读取文件名

相关内容