Найти тему
Home Assistant

Чистка старых видеозаписей простым скриптом на роутере по расписанию

Оглавление

В предыдущих статьях на тему SSH и VPN, мы уже разобрались как установить систему пакетов репозитория Entware на USB-накопитель нашего роутера Keenetic.

Entware есть и на openwrt, поэтому всё написанное ниже должно работать и там.


Приступим


Подключаемся программой
Putty к нашему роутеру (к системе Entware на USB).

-2
IP: 192.168.1.1 port: 222

При помощи редактора vi, создаём скрипт cleaner.sh

vi cleaner.sh

В редакторе vi нажимам "i" для начала ввода и копируем строки ниже:

cleaner.sh

#!/bin/sh

find /tmp/mnt/ИМЯ_ВАШЕГО_USB_ДИСКА/Cam1/* -maxdepth 4 -mtime +31 -type f -exec rm {} \;
find /tmp/mnt/ИМЯ_ВАШЕГО_USB_ДИСКА/Cam1/ -empty -type d -delete
find /tmp/mnt/ИМЯ_ВАШЕГО_USB_ДИСКА/Cam2/* -maxdepth 4 -mtime +31 -type f -exec rm {} \;
find /tmp/mnt/ИМЯ_ВАШЕГО_USB_ДИСКА/Cam2/ -empty -type d -delete
-3

После написания нажимаем: ESC вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq) Enter

Не забываем дать права на исполнение нашему скрипту:

chmod +x cleaner.sh

Что тут происходит?

1. **`find /tmp/mnt/02C04AF4C04AED8B/Cam1/*`**: Ищет файлы и каталоги, начинающиеся с `/tmp/mnt/02C04AF4C04AED8B/Cam1/` и соответствующие любому подшаблону `*` (любой).


2. **`-maxdepth 4`**: Ограничивает глубину поиска до 4 уровней подкаталогов. Команда будет искать только на уровне директории `/tmp/mnt/02C04AF4C04AED8B/Cam1/` и внутри ее подкаталогов до 4 уровней глубины.


3. **`-mtime +31`**: Ищет файлы, последний раз изменённые более 31 дня назад. Этот параметр фильтрует файлы по дате их последнего изменения.


4. **`-type f`**: Ищет только файлы (не каталоги и не другие типы файловых объектов).


5. **`-exec rm {} \;`**: Для каждого найденного файла выполняет команду `rm`, которая удаляет этот файл. `{}` представляет собой каждый найденный файл, который передается в команду `rm`.


Итак, команда находит и удаляет все файлы в каталоге `/tmp/mnt/02C04AF4C04AED8B/Cam1/` и его подкаталогах (до 4 уровней глубины), которые были изменены более 31 дня назад.


6. **`find /tmp/mnt/02C04AF4C04AED8B/Cam1/`**: Ищет файлы и каталоги, начиная с директории `/tmp/mnt/02C04AF4C04AED8B/Cam1/`.


7. **`-empty`**: Фильтрует результаты поиска, находя только пустые файлы и пустые каталоги (то есть те, которые не содержат других файлов или подкаталогов).


8. **`-type d`**: Фильтрует результаты, оставляя только директории (папки), исключая файлы.


9. **`-delete`**: Удаляет найденные пустые директории.


Таким образом, команда находит и удаляет все пустые директории внутри `/tmp/mnt/02C04AF4C04AED8B/Cam1/` и его подкаталогов.

В примере такое выполняется для двух камер

Теперь мы можем задействовать cron для выполнения скрипта по расписанию:

vi /opt/etc/crontab

И добавляем запись

0 3 * * * root /opt/root/cleaner.sh
-4

После написания нажимаем: ESC вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq) Enter

Сайт, который поможет Вам понять синтаксис cron: https://crontab.guru/

Последняя команда

/opt/etc/init.d/S10cron start

Готово! Теперь сам роутер следит за тем, чтобы подключённый к нему USB 3.0 диск не переполнялся от вала записей наших камер по FTP 👍

Умный Дом Home Assistant