logrotateに関するアドバイスを求めています。
最近SSDを保存するためにlog2ramをインストールしました。 24GBのRAMをすべて使用しないため、/var/log/に2GBを割り当てました。現在+/-300Mbを使用しています。
私はlogrotateが.gzで終わることができるサブディレクトリ内のすべてのファイルを/var/old.log/に移動し、サブディレクトリ構造を維持したいと思います。
いくつかの調査を行い、可能な解決策を見つけましたが、今質問が浮上しています。
検索を使用してファイルを移動するときにディレクトリ構造を維持する
logrotateがこれらのファイルを移動するためにこのヘルパースクリプトを実行した場合(例:/var/log/file.log.2.gzを移動した場合)、file.logを移動する代わりにログを回転させるときに新しいfile.logを生成しません。 .gz. file.log.2.gzがもう存在しないので、2.gzをfile.log.3.gzに変更します。その後、最終スクリプトは同じ名前で古いログを上書きします。
私はこれが私が望むものを知っているので、olddirオプションを完全に理解していません。ただし、手動状態ではワイルドカードを慎重に使用する必要があります。助けが必要ですか?
これにより、/var/hdd.log/の内容を使用して起動中に/var/logが生成され、再起動時に/var/hdd.logが更新されます。
logrotateが圧縮ファイルを別のディレクトリに移動してtmpfsにロードされないようにしたいのですが、すべての/etc/logrotate.d/*ファイルを編集したくありません。
私はlog2ramの起動中に/ var / logを生成する前に何かを置くことができると思いましたが、どこにいるのかわかりません。
システムは24時間年中無休で実行され、再起動を最小限に抑えるように努めます。オペレーティングシステム:Ubuntu 22.04 LTS
説明書があまりにも明白な場合もあり、あいまいな場合もあります。たぶん、誰かが私が理解できるように、より複雑で簡単な方法で説明することができます。
時間をいただきありがとうございます。
答え1
はい、
mv
オプションなしでコマンドを使用すると、同じ名前のすべてのファイルが上書きされます。これを回避する1つの方法は、既存のファイルを上書きするのではなく、その--backup=numbered
形式で新しいファイルを生成するオプションを使用することです。filename~*[number]*~
別のオプションは、回転したログの名前を次のように変更するdateextなどの他のファイル命名形式を使用することです。ファイル名 - YYYYMMDD同じ名前のファイルが上書きされるのを防ぎます。olddir
回転ログを保存する場所です。 logrotateのマニュアルページでは、ワイルドカードの使用について警告します。これは、このオプションがないと、回転したログが同じディレクトリに保存されるためです。ワイルドカードを使用してlogrotateにすべてのファイルを回転させるように指示した場合(*
)、ログの回転にも影響します。起動および終了時に実行されるジョブを定義するには、cronjobsまたはカスタム作成されたinitサービスを使用することをお勧めします。トラブルシューティングに役立つ例は次のとおりです
logrotate
。
/var/log/**/*.log {
daily
compress
dateext
missingok
noifempty
sharedscripts
postrotate
cd /var/log && find . -type f -name '*.gz' -exec rsync -aR {} /var/old.log/ \;
endscript