
1 日以上経過したログ ファイルを含むフォルダーがあります/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:
gzip の代わりに zip を使用する場合は、以下を追加します。
compresscmd /usr/bin/zip
compressoptions -r
compressext .zip