我有一個資料夾/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