/home/usr/logs/
1日より古いログファイルを含むフォルダがあります。 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」というセクションを追加し、回転後に実行される小さなbashスクリプトpostrotateを考えます。
はい。
/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