はじめに
ISMS (情報セキュリティマネジメントシステム) 対策等で Downloads フォルダとゴミ箱を定期的に自動削除したいことありますよね。
というわけで手順まとめます。
もっとスマートなやり方知ってる方、是非教えてください!
Ubuntu
Downloads フォルダ定期自動削除
$ crontab -e
以下の行追記。
削除日時や削除対象ファイルの数字はお好みで調整どうぞです。
# 毎月1日12時30分に ~/Downloads フォルダの更新日が60日前のファイルを削除
30 12 1 * * find ~/Downloads -mtime +59 -exec rm -rf {} \;
ファイル数確認。
ちゃんと減りましたね!
$ ls -1 ~/Downloads | wc -l
ゴミ箱定期自動削除
trash-cli インストール
$ sudo apt install trash-cli
$ crontab -e
以下2行追記
# 毎月1日12時30分にゴミ箱フォルダの更新日が60日前より古いファイルを削除
30 12 1 * * trash-empty 60
ファイル数確認。
ちゃんと減りましたね!
$ ls -1 ~/.local/share/Trash/files/ | wc -l
おまけ: crontab -r
で設定消えちゃうの怖い問題
対処方法1: crontab -r
時確認してくれるようにする
元々 -i 付与で確認してくれるようになる。
$ crontab -ir
crontab: really delete <user>'s crontab? (y/n)
~/.bash_aliases
に追記
# ~/.bashrc
でも動く
$ vi ~/.bash_aliases
以下2行追記
# crontab -r の削除時に確認させる
alias crontab="crontab -i"
$ source ~/.bash_aliases
通常通り crontab -r
しても確認してくれる!安心!
$ crontab -r
crontab: really delete <user>'s crontab? (y/n)
対処方法2: crontab -r を封印
~/.bash_aliases
に追記
# ~/.bashrc
でも動く
$ vi ~/.bash_aliases
以下追記
# crontab -r を封印する
function crontab() {
local opt
for opt in "$@"; do
if [[ $opt == -r ]]; then
echo 'crontab -r is sealed!'
return 1
fi
done
command crontab "$@"
}
$ source ~/.bash_aliases
通常通り crontab -r
してもガードしてくれる!安心!
$ crontab -r
crontab -r is sealed!
$
注1
crontab -e
ではなく、以下の /etc/cron.d/
に書くパターンは root ユーザー向けなので、一般ユーザーとしては推奨されません。
#初出時はこれ書いてましたが、、、社内有識者にコメントもらい、 crontab -e
へ修正。。
$ cp /etc/crontab /etc/cron.d/test_cron
$ sudo vi /etc/cron.d/test_cron
$ sudo service cron restart
注2
~/.bash_aliases
ではなく ~/.bashrc
でも動きますが、
.bashrc
に「推奨は ~/.bash_aliases
」な旨記載があります。
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
DeepL さんで翻訳
エイリアスの定義。
ここに直接追加するのではなく、~/.bash_aliasesのような別のファイルに追加するとよいでしょう。
bash-doc パッケージの /usr/share/doc/bash-doc/examples を参照してください。
Mac
Downloads フォルダ定期自動削除
GUI
Automator 使用。以下そのままどうぞ。
CUI
crontab 使用。
まずは cron のフルディスクアクセス許可。
https://prograshi.com/general/command/crontab-trouble-shooting/
$ crontab -e
以下追記
# 毎月1日12時30分に ~/Downloads フォルダの更新日が60日前のファイルを削除
30 12 1 * * find ~/Downloads -mtime +59 -exec rm -rf {} \;
ファイル数確認。
ちゃんと減りましたね!
$ ls -1 ~/Downloads | wc -l
ゴミ箱定期自動削除
Windows
Downloads フォルダ定期自動削除
ゴミ箱定期自動削除
参考
Ubuntu