findコマンドを使ってn日前のファイルを検索し、まとめて削除させます。
例:30日以上前のファイルを削除する
find /disk2/folder1 -mtime +30 -print0 | xargs --null rm -rf
/disk2/folder1 で検索するディレクトリを指定
-mtime +30 は30日以上前
オプション | 概要 |
---|
-mmin | ファイルのデータが最後に修正された日時(分指定) |
-mtime | ファイルのデータが最後に修正された日時(日指定) |
-amin | ファイルのデータに最後にアクセスされた日時(分指定) |
-atime | ファイルのデータに最後にアクセスされた日時(日指定) |
-cmin | ファイルのデータとステータスが最後に修正された日時(分指定) |
-ctime | ファイルのデータとステータスが最後に修正された日時(日指定) |
「|」(パイプ)は前のコマンドの結果を後のコマンドに渡す
xargs は前から引き継いだ出力を因数にコマンドを実行する
-print0 と--null はfindとxargsの書式の違いを一致させるおまじないとして必須らしい( -print0 は find のオプションの一番最後に記述しないとダメとどこかに書いてあったのを見た記憶がある)
rm はファイルを削除するコマンド
-rf はrmのオプションでファイルを再帰的・強制的に削除する(危険なコマンド)
※ find のオプションで -delete を使う方法でもファイルの削除は可能だが、強制削除にならないので上手く行かない場合がある(空でないディレクトリが削除できないなど)
※2 パイプ+xargsを使わなくとも、find のオプションで -exec を使う方法でも同様の事が可能、execとxargsはオプションの指定の仕方でまったく同じ動作にもできるが、若干、xargsのほうが柔軟性が高いインテリジェントな処理をしてくれる、と言うような記述をどこかで見た記憶がる
これをcronで毎日実行して、sambaのゴミ箱の中身を削減するように設定しております。。。
コメント