压缩旧日志文件并移动到新目录

压缩旧日志文件并移动到新目录

我有一个文件夹/home/usr/logs/,其中包含超过 1 天的日志文件。我希望将所有超过一天的日志文件压缩为单独的压缩存档(例如 zip 或 tar.gz)并将它们移动到文件夹/home/usr/logs/archive

日志文件的命名格式为valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log.1019, app5s.sts.1019

我尝试这样:

find .  -mtime +1 -exec zip filename.zip '{}' + && mv filename.zip archive/ \;

但这些文件未正确压缩。有人能帮我找出我的代码中的错误吗?

答案1

logrotate 可以做到这一点,模式匹配可以是 *log,然后添加一个名为“postrotate”的部分,考虑 postrotate 一个在旋转后运行的小 bash 脚本。

例子;

/home/usr/logs/*.log {
    daily
    missingok
    compress
    #delaycompress (this will prevent compressing of one day)
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
                mv /home/usr/logs/*.gz /home/usr/logs/archive/;
    endscript
}

更新1:

如果你想使用 zip 而不是 gzip,请添加;

compresscmd /usr/bin/zip
compressoptions -r
compressext .zip

相关内容