指定時間を過ぎたファイルを削除するツール「purgo」
指定時間を過ぎ、古くなったファイルを削除するツール「purgo」を作成しました。Windows、macOS、Linuxで動作します。インストール方法や簡単な使い方をメモしておきます。
インストール¶
OSごとに以下のコマンドでインストールできます。
sudo curl -fsSL https://github.com/sig9org/purgo/releases/download/v0.0.2/purgo_v0.0.2_darwin_arm64 -o /usr/local/bin/purgo
sudo chmod +x /usr/local/bin/purgo
sudo curl -fsSL https://github.com/sig9org/purgo/releases/download/v0.0.2/purgo_v0.0.2_linux_amd64 -o /usr/local/bin/purgo
sudo chmod +x /usr/local/bin/purgo
sudo curl -fsSL https://github.com/sig9org/purgo/releases/download/v0.0.2/purgo_v0.0.2_linux_arm64 -o /usr/local/bin/purgo
sudo chmod +x /usr/local/bin/purgo
指定日を過ぎたファイルが削除されるか、ドライラン(テスト)実行で確認する¶
実際にはファイルを削除せず、ドライラン実行するには「--dryrun」オプションを指定します。「最終更新から3日以上、経過しているファイルが削除対象なのか、ドライラン実行で確認する」には以下のように実行します。
# purgo -d 3 --dryrun
[skip] 1day.txt (elapsed: 1d10h48m)
[skip] 2day.txt (elapsed: 2d10h48m)
[dry-run] 3day.txt (elapsed: 3d10h48m)
[dry-run] 4day.txt (elapsed: 4d10h48m)
[dry-run] 5day.txt (elapsed: 5d10h48m)
[dry-run] 6day.txt (elapsed: 6d10h48m)
[dry-run] 7day.txt (elapsed: 7d10h48m)
指定日を過ぎたファイルを削除する¶
実際に「最終更新から3日以上、経過しているファイルを削除する」には「-d 3」(または「--day 3」)を指定して実行します。実行前は以下のファイルがありました。
# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.txt
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.txt
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.txt
-rw-r--r-- 1 root root 0 Jul 19 00:00 5day.txt
-rw-r--r-- 1 root root 0 Jul 18 00:00 6day.txt
-rw-r--r-- 1 root root 0 Jul 17 00:00 7day.txt
purgoでファイルを削除してみます。
# purgo -d 3
[skip] 1day.txt (elapsed: 1d10h52m)
[skip] 2day.txt (elapsed: 2d10h52m)
[delete] 3day.txt (elapsed: 3d10h52m)
[delete] 4day.txt (elapsed: 4d10h52m)
[delete] 5day.txt (elapsed: 5d10h52m)
[delete] 6day.txt (elapsed: 6d10h52m)
[delete] 7day.txt (elapsed: 7d10h52m)
実行後は以下になっていました。「最終更新が3日未満」のファイルは残っていますが、それ以外は削除されたことが分かります。
# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.txt
削除対象のファイルを正規表現で指定する¶
以下のファイル群があったとします。
# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.md
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.md
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.txt
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.md
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.txt
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.md
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.txt
-rw-r--r-- 1 root root 0 Jul 19 00:00 5day.md
-rw-r--r-- 1 root root 0 Jul 19 00:00 5day.txt
-rw-r--r-- 1 root root 0 Jul 18 00:00 6day.md
-rw-r--r-- 1 root root 0 Jul 18 00:00 6day.txt
-rw-r--r-- 1 root root 0 Jul 17 00:00 7day.md
-rw-r--r-- 1 root root 0 Jul 17 00:00 7day.txt
正規表現を活用し、「5日以上経過しているMarkdownファイル(拡張子.md)」を削除してみます。
# purgo -d 5 '¥*.md'
[skip] 1day.md (elapsed: 1d10h58m)
[skip] 2day.md (elapsed: 2d10h58m)
[skip] 3day.md (elapsed: 3d10h58m)
[skip] 4day.md (elapsed: 4d10h58m)
[delete] 5day.md (elapsed: 5d10h58m)
[delete] 6day.md (elapsed: 6d10h58m)
[delete] 7day.md (elapsed: 7d10h58m)
実行後は以下になっていました。
# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.md
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.md
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.txt
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.md
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.txt
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.md
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.txt
-rw-r--r-- 1 root root 0 Jul 19 00:00 5day.txt
-rw-r--r-- 1 root root 0 Jul 18 00:00 6day.txt
-rw-r--r-- 1 root root 0 Jul 17 00:00 7day.txt
参考¶
テスト用ファイルの作成¶
Pythonでテスト用ファイルを作成するには以下を実行します。
1 2 3 4 | |
以下のファイルが作成されます。
# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 00:00 1day.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 2day.txt
-rw-r--r-- 1 root root 0 Jul 21 00:00 3day.txt
-rw-r--r-- 1 root root 0 Jul 20 00:00 4day.txt
-rw-r--r-- 1 root root 0 Jul 19 00:00 5day.txt
-rw-r--r-- 1 root root 0 Jul 18 00:00 6day.txt
-rw-r--r-- 1 root root 0 Jul 17 00:00 7day.txt
ヘルプ表示¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |