我有一个文件夹/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