LoginSignup
10
11

More than 5 years have passed since last update.

Linuxサーバ上で特定日付より前に作成されたファイルを一括で削除する

Posted at

 Linuxのサーバ上で特定の日付より前に作成されたファイルを一括で削除したり移動したりしたい時がある。え、ない? いやいや、まれにあるんだなこれが。

 例えば、自動起動スクリプトにMTAを登録していなくて、かつてサーバを再起動した時点から自動発報メールが未送信のままspoolに溜まっていた場合など、MTA再起動したらqueueに溜まったメールが怒涛のように送信されてウギャーっとなる前に「もうこの日より前のメールはいらないや…」と選別できた時とかである(ものすごく具体的な例なのは実体験だから…(笑))。

$ cd /var/spool/clientmqueue
$ ls -la
-rw-rw---- 1 apache smmsp     984 12月 24 11:12 qfsBO2CNSF013462
-rw-rw---- 1 apache smmsp     984 12月 25 11:04 qfsBP24NJi007741
-rw-rw---- 1 apache smmsp     984 12月 26 11:07 qfsBQ27TE6002185
-rw-rw---- 1 apache smmsp     984 12月 27 12:09 qfsBR39wPr029964
-rw-rw---- 1 apache smmsp     984 12月 28 11:51 qfsBS2pRxg023695
-rw-rw---- 1 apache smmsp     984 12月 29 11:26 qfsBT2QOTX017228
-rw-rw---- 1 apache smmsp     984 12月 30 11:08 qfsBU28X9Q010897
-rw-rw---- 1 apache smmsp     984 12月 31 11:26 qfsBV2Qu7n005217
-rw-rw---- 1 apache smmsp     982  1月  1 12:30 qft013UbkP032693
-rw-rw---- 1 apache smmsp     982  1月  2 11:31 qft022VEKx025596
-rw-rw---- 1 apache smmsp     982  1月  3 11:33 qft032X1RJ019618
-rw-rw---- 1 apache smmsp     982  1月  4 11:21 qft042LROG013417
-rw-rw---- 1 apache smmsp     982  1月  5 11:04 qft0524bSc007230
-rw-rw---- 1 apache smmsp     982  1月  6 11:06 qft0626N90001781
-rw-rw---- 1 apache smmsp     982  1月  7 11:07 qft0727hF3028772
-rw-rw---- 1 apache smmsp     982  1月  8 11:04 qft0824NQZ023074

 ↑こんな感じにメールキューに未送信メールが一杯あるんだけど、もう1月1日より前のファイルはいらないや!──とかいう時がまれにある。

 そんな時、ファイルのタイムスタンプを判断して、そのファイルのタイムスタンプより以前(そのファイルも含まれるので注意!)のファイルを一括で削除できると楽なんだが、そんな便利なオプションがrmにはない。なので、findとチェーンしてやってみた。

$ find \! -newer qfsBV2Qu7n005217|sort|less|xargs ls -la

 find-newerオプションの引数はタイムスタンプを判定したいファイル名である。まず ls で試してみると、見事に12月31日のファイル「qfsBV2Qu7n005217」を含む それ以前 のファイルの一覧が表示された。もし それ以降 のファイルを対象にしたければ、\! の否定オプションを付けなければいい。
では、早速削除してみる。

$ find \! -newer qfsBV2Qu7n005217|sort|less|xargs rm
$ ls -la
-rw-rw---- 1 apache smmsp     982  1月  1 12:30 qft013UbkP032693
-rw-rw---- 1 apache smmsp     982  1月  2 11:31 qft022VEKx025596
-rw-rw---- 1 apache smmsp     982  1月  3 11:33 qft032X1RJ019618
-rw-rw---- 1 apache smmsp     982  1月  4 11:21 qft042LROG013417
-rw-rw---- 1 apache smmsp     982  1月  5 11:04 qft0524bSc007230
-rw-rw---- 1 apache smmsp     982  1月  6 11:06 qft0626N90001781
-rw-rw---- 1 apache smmsp     982  1月  7 11:07 qft0727hF3028772
-rw-rw---- 1 apache smmsp     982  1月  8 11:04 qft0824NQZ023074

 バッチリ、12月31日以前のファイルがすべて消えました。あとはMTAを起動してqueueに残ってるメールをすべて送信させれば、spoolもきれいさっぱりになる次第。

まぁ、サーバ再起動したらミドルウェアの起動状況をちゃんと確認しておけよ──ということですな、はいその通りです(汗)

10
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11