Database JUNKY

MySQL,MariaDBを中心としたブログです

N日以上のファイルを削除する方法 ~ tmpwatch

指定日次以上経過しているファイルの削除方法する方法として、よくあるのが

find /var/log/etc/ -mtime +2 -exec rm -f {} \;

とかですが、もっと楽な方法があったのでメモです

f:id:hit10231023:20161104125034j:plain

f:id:hit10231023:20180308234003p:plain

伊藤園 1日分の野菜 (缶) 190g×20本

伊藤園 1日分の野菜 (缶) 190g×20本

7日以上前の、*.gzの拡張子を持つファイルを削除する

とまあ、-deleteというオプションだけ追加するだけで、削除できるので見た目が(若干シンプルですよね)

find /var/log/etc -name '*.gz' -mtime +7 -delete

tmpwatch を使うともっと細かいことがシンプルにできます

tmpwatch て実は使ったことなかったのですが、cronで、/tmpを削除するとかのOSのデフォルト設定で入っているのですね (^_^;;

# cat /etc/cron.daily/tmpwatch                           
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
        -X '/tmp/hsperfdata_*' 240 /tmp
/usr/sbin/tmpwatch "$flags" 720 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 720 "$d"
    fi
done

7日以上経過しているファイルを削除する

tmpwatch -m 7d /var/log/etc

7日以上経過しているファイルを削除する、ただし、ディレクトリの削除は行わない

tmpwatch -m 7d -d /var/log/etc

tmpwatch オプション詳細

-u: –アクセス時刻
-m: –更新時刻
-c: –ステータス変更時刻
-M: –ディレクトリの更新時刻
-a: すべてのファイルを削除する(怖い9
-d: ディレクトリは削除しない
-f: 強制実行モード
-l: シンポリックリンクの削除は行いません
-q: サイレントモード
-s: –fuser –fuserコマンドを使ってファイル状態を確認
-t: –test テストモードで、実際の削除が走りません
-U: –exclude-user=user –指定するユーザのファイルを削除対象外
-v: –verbose –詳細モード
-x: –exclude=path –指定するファイル・フォルダを削除対象外にする

いかがでしょうか?