Linux備忘録:tmpwatchについて
sambaで共有している領域にある、リサイクルディレクトリ内を定期的にクリアしたい。
ということで、cronで新たにtmpwatchを動作させるシェルを追加した。
基本的には、バックアップもあることから、24時間以上経過したファイルとディレクトリを削除する設定とする。
テスト用として、以下のコマンドを実行すると、ちゃんと対象となるファイルが表示された。
# /usr/sbin/tmpwatch -tv 24 /hoge/samba/.recycle
・オプション
-t:テストモードで実行する。実際に削除は行わない。
-v:処理の内容を表示する(verbose)
ちゃんと表示を確認したので、実際に実行してみた。
# /usr/sbin/tmpwatch -fv 24 /hoge/samba/.recycle
・オプション
-f:rootに書き込み権限無くても削除する。
しかし、動作させてみても、.recycleディレクトリの中が消えていない。
いろいろと検索したり、試したりしたのだが、どうも削除が実行されない。
そこで、以下のコマンドを実行した。
# /usr/sbin/tmpwatch -umcfva 24 /hoge/samba/.recycle
・オプション
-u:ファイルのアクセス時刻(atime)
-m:ファイル・データの変更時刻(mtime ファイルの実データを変更した時刻)
-c:ファイル状態の変更時刻(ctime ファイルのinodeを変更した時刻)
-a:すべてのファイルの種類を対象とする
しかし、本来削除されるべきファイルやディレクトリが残っている。
そこでファイルの時刻情報について調べてみた。
atimeについて
http://itpro.nikkeibp.co.jp/article/Keyword/20090607/331455/
mtimeについて
http://itpro.nikkeibp.co.jp/article/Keyword/20090710/333611/
ctimeについて
http://itpro.nikkeibp.co.jp/article/Keyword/20090710/333510/
この時、sambaの領域をクライアントPCからマウントしていたのだが、そこで「.recycle」フォルダ内にアクセスしていた為に、atimeが更新されていたのが原因らしい。
そこでオプションからatimeを省いて実行してみた。
# /usr/sbin/tmpwatch -mcfva 24 /hoge/samba/.recycle
そうすると、無事にほとんどのファイルとディレクトリが削除された。
普段はrecycleフォルダにはアクセスしないので、cronで動作させるには問題無さそうだが、今回のようにクライアントPCからアクセスしてしまうとatimeが更新されるので、注意が必要だ。
tmpディレクトリのクリア等、普段から良く使用しているtmpwatchでも、状況によっては想定した動作結果とならないことが分かった。
注意事項として記録しておく。