В предыдущих статьях на тему SSH и VPN, мы уже разобрались как установить систему пакетов репозитория Entware на USB-накопитель нашего роутера Keenetic.
Entware есть и на openwrt, поэтому всё написанное ниже должно работать и там.
Приступим
Подключаемся программой Putty к нашему роутеру (к системе Entware на USB).
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
После написания нажимаем: 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
После написания нажимаем: ESC вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq) Enter
Сайт, который поможет Вам понять синтаксис cron: https://crontab.guru/
Последняя команда
/opt/etc/init.d/S10cron start