如何在唯一的 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
:从标准输入(的输出)读取文件名