#概要
今回はRaspberry PIにてCCTVシステムを構築した場合、一定期間が過ぎた画像ファイルや動画ファイルを自動で削除するため、コマンドを作成とCronに登録してみます。
#一定期間が過ぎたファイルを抽出
下記のコマンドは1日以上過ぎたファイルが表示されます。
現在の日付:2020/09/29
1日以上過ぎたファイルの取得:引数「+1」を指定します。
28日のファイルを取得:引数を「+1」→「0」に指定します。
■コマンド
find /var/lib/motion -name '*.*' -mtime +1
■実行結果
./03-20200926145041-02.jpg
./03-20200926145042-00.jpg
./03-20200926145042-01.jpg
./03-20200926145042-02.jpg
./03-20200926145043-00.jpg
./03-20200926145043-01.jpg
./04-20200927183825.avi
./04-20200927183825-00.jpg
./04-20200927183825-01.jpg
./04-20200927183825-02.jpg
./04-20200927183826-00.jpg
./04-20200927183826-01.jpg
./04-20200927183826-02.jpg
./04-20200927183826-03.jpg
#一定期間が過ぎたファイルを削除
上記のコマンドに引数を「-delete」を追加すると削除されます。
次のコマンドで確認しましょう。
■コマンド
find /var/lib/motion -name '*.*' -mtime +1 -delete
■実行結果
下記のエラーが表示されます。
理由は該当ディレクトリに削除する権限がないからです。
この場合、「sudo」コマンドで「root」権限を利用してファイルを削除しましょう。
find: cannot delete 。ョ/var/lib/motion/17-20200927213443-01.jpg。ッ: Permission denied
■sudoコマンドを利用して再度削除
以下のコマンドを実行します。
pi@raspberrypi:/var/lib/motion $ sudo find /var/lib/motion -name '*.*' -mtime +1 -delete
pi@raspberrypi:/var/lib/motion $
■削除されたか確認
下記のコマンド実行結果でファイルが削除され、表示されないことを確認します。
pi@raspberrypi:/var/lib/motion $ sudo find /var/lib/motion -name '*.*' -mtime +1
pi@raspberrypi:/var/lib/motion $
#定期的にコマンドを実行するための設定
Linux上では特定コマンドまたはプログラムを定期的に実行するためにはcronを使います。Windowsの場合、タスクスケジューラと同じものです。
■コマンド
下記の画面のように初めて実行した場合、表示されます。
私はVIエディタが好きですので、2を選びます。
pi@raspberrypi:/var/lib/motion $ crontab -e
no crontab for pi - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.tiny
3. /bin/ed
Choose 1-3 [1]:2
■cron設定
下記の1行を追加します。
毎日1時0分に31日以上過ぎたファイルを削除するコマンドが実行されます。
参考:cronの設定ガイド
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html
# m h dom mon dow command
0 1 * * * sudo find /var/lib/motion -name '*.*' -mtime +31 -delete
※実際に削除されると思いますので、皆さんのご自身で確認をお願い致します。
#終わりに
今回この内容を応用すればファイルを圧縮してメールへ添付及びSlackチャットにも自動でアップロードすることができます。
近いうちにメールやSlackに添付するプログラムを書いてみます。