tmpwatch で一定時間経過したファイルを削除する
一定時間以上経過しているファイルを削除したい、という場合は tmpwatch を使うと便利です。
検証環境
| $ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
|
インストール
CentOS 7.2 では普通に yum でインストール出来ました。
| sudo yum update -y
sudo yum install -y tmpwatch
|
テスト用のファイルを作成する
テスト用のファイルを作成します。touch -d で作成日を指定したファイルが作れますので、一日おきのファイルを作成してみました。
| touch -d "2016/7/15 00:00:00" test15.txt
touch -d "2016/7/16 00:00:00" test16.txt
touch -d "2016/7/17 00:00:00" test17.txt
touch -d "2016/7/18 00:00:00" test18.txt
touch -d "2016/7/19 00:00:00" test19.txt
touch -d "2016/7/20 00:00:00" test20.txt
touch -d "2016/7/21 00:00:00" test21.txt
touch -d "2016/7/22 00:00:00" test22.txt
touch -d "2016/7/23 00:00:00" test23.txt
touch -d "2016/7/24 00:00:00" test24.txt
|
意図した通りにファイルが作成されました。
1
2
3
4
5
6
7
8
9
10
11
12 | $ ls -l
total 0
-rw-rw-r-- 1 user user 0 Jul 15 00:00 test15.txt
-rw-rw-r-- 1 user user 0 Jul 16 00:00 test16.txt
-rw-rw-r-- 1 user user 0 Jul 17 00:00 test17.txt
-rw-rw-r-- 1 user user 0 Jul 18 00:00 test18.txt
-rw-rw-r-- 1 user user 0 Jul 19 00:00 test19.txt
-rw-rw-r-- 1 user user 0 Jul 20 00:00 test20.txt
-rw-rw-r-- 1 user user 0 Jul 21 00:00 test21.txt
-rw-rw-r-- 1 user user 0 Jul 22 00:00 test22.txt
-rw-rw-r-- 1 user user 0 Jul 23 00:00 test23.txt
-rw-rw-r-- 1 user user 0 Jul 24 00:00 test24.txt
|
tmpwatch で削除対象となるファイルを確認する(削除はしない)
-t(--test)オプションを指定すると実際にファイルは削除せず、削除対象となるファイルの確認だけを行うことが出来ます。「5 日以上古いファイルで、削除対象となるもの」を確認した場合の出力結果は以下の通りです。
| $ tmpwatch -t -m 5d /home/user/test
removing file /home/user/test/test15.txt
removing file /home/user/test/test16.txt
removing file /home/user/test/test17.txt
removing file /home/user/test/test18.txt
removing file /home/user/test/test19.txt
|
テストしただけですので、ファイルは削除されていません。
1
2
3
4
5
6
7
8
9
10
11
12 | $ ls -l
total 0
-rw-rw-r-- 1 user user 0 Jul 15 00:00 test15.txt
-rw-rw-r-- 1 user user 0 Jul 16 00:00 test16.txt
-rw-rw-r-- 1 user user 0 Jul 17 00:00 test17.txt
-rw-rw-r-- 1 user user 0 Jul 18 00:00 test18.txt
-rw-rw-r-- 1 user user 0 Jul 19 00:00 test19.txt
-rw-rw-r-- 1 user user 0 Jul 20 00:00 test20.txt
-rw-rw-r-- 1 user user 0 Jul 21 00:00 test21.txt
-rw-rw-r-- 1 user user 0 Jul 22 00:00 test22.txt
-rw-rw-r-- 1 user user 0 Jul 23 00:00 test23.txt
-rw-rw-r-- 1 user user 0 Jul 24 00:00 test24.txt
|
tmpwatch で実際に古いファイルを削除してみる
現在時刻を確認しておきます (7/24 です)。
| $ date
Sun Jul 24 21:00:22 JST 2016
|
tmpwatch を使って 5 日以上古いファイルは削除してみます。
| $ tmpwatch -m 5d /home/user/test
$
|
結果を確認します。意図通り、5 日以上経過している古いファイルは削除されています。
| $ ls -l
total 0
-rw-rw-r-- 1 user user 0 Jul 20 00:00 test20.txt
-rw-rw-r-- 1 user user 0 Jul 21 00:00 test21.txt
-rw-rw-r-- 1 user user 0 Jul 22 00:00 test22.txt
-rw-rw-r-- 1 user user 0 Jul 23 00:00 test23.txt
-rw-rw-r-- 1 user user 0 Jul 24 00:00 test24.txt
|
実際には cron で定期処理として実行する... といった使い方が「あるあるパターン」かも知れません。