【linux】蓄積されていくログファイルなどを定期的に削除する例
問題
毎日1つファイルができるタイプのログがあるのですが、ディスクを圧迫するので、1か月分ぐらい残して定期的に削除したいです。
答え
findコマンドでできる。
よくある -exec オプションを使った書き方だと、
find /path/to/log -name '*.log' -mtime +30 -exec rm {} \;
なお、findコマンドは -delete オプションが使えるなら、そちらの方が高速らしい。見た目もすっきり。
find /path/to/log -name '*.log' -mtime +30 -delete
tmpwatchコマンドが使える環境なら、こちらも便利。詳細はマニュアルを参照されたし。下記の例は更新日が720時間以上古いファイルを削除する。
tmpwatch -m 720 /path/to/log
必要なものも削除しないか心配なときは、一度テストしてから(-t オプション)。
tmpwatch -mt 720 /path/to/log
ディレクトリを消したくないときは、ディレクトリを除外。
tmpwatch -d -m 720 /path/to/log
そしてこれをcrontabなどに設定。
# 例えば、日曜日AM3時に削除 0 3 * * 0 find /path/to/log -name '*.log' -mtime +30 -delete
これで自動的に消えていきます。
コメント