古いログファイルを圧縮して新しいディレクトリに移動する

古いログファイルを圧縮して新しいディレクトリに移動する

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.1019app5s.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

関連情報