У меня есть две IP-камеры, которые отправляют снимки изображения на FTP-сервер каждые 10 секунд с 08:00 до 20:59. Структура каталогов выглядит следующим образом:
`-- public_html
`-- securitycams
|-- cam01
| |-- 20190601
| | |-- 08
| | | |-- 20190601_080000.jpg
| | | |-- 20190601_080010.jpg
| | | |-- 20190601_080020.jpg
| | | `-- ...
| | |-- 09
| | | |-- 20190601_090000.jpg
| | | |-- 20190601_090010.jpg
| | | |-- 20190601_090020.jpg
| | | `-- ...
| | |-- 10
| | |-- 11
| | |-- 12
| | |-- 13
| | |-- 14
| | |-- 15
| | |-- 16
| | |-- 17
| | |-- 18
| | |-- 19
| | `-- 20
| `-- 20190602
| |-- 08
| | |-- 20190602_080000.jpg
| | |-- 20190602_080010.jpg
| | |-- 20190602_080020.jpg
| | `-- ...
| |-- 09
| | |-- 20190602_090000.jpg
| | |-- 20190602_090010.jpg
| | |-- 20190602_090020.jpg
| | `-- ...
| |-- 10
| |-- 11
| |-- 12
| |-- 13
| |-- 14
| |-- 15
| |-- 16
| |-- 17
| |-- 18
| |-- 19
| `-- 20
`-- cam02
| |-- 20190601
| | |-- 08
| | | |-- 20190601_080000.jpg
| | | |-- 20190601_080010.jpg
| | | |-- 20190601_080020.jpg
| | | `-- ...
| | |-- 09
| | | |-- 20190601_090000.jpg
| | | |-- 20190601_090010.jpg
| | | |-- 20190601_090020.jpg
| | | `-- ...
| | |-- 10
| | |-- 11
| | |-- 12
| | |-- 13
| | |-- 14
| | |-- 15
| | |-- 16
| | |-- 17
| | |-- 18
| | |-- 19
| | `-- 20
| `-- 20190602
| |-- 08
| | |-- 20190602_080000.jpg
| | |-- 20190602_080010.jpg
| | |-- 20190602_080020.jpg
| | `-- ...
| |-- 09
| | |-- 20190602_090000.jpg
| | |-- 20190602_090010.jpg
| | |-- 20190602_090020.jpg
| | `-- ...
| |-- 10
| |-- 11
| |-- 12
| |-- 13
| |-- 14
| |-- 15
| |-- 16
| |-- 17
| |-- 18
| |-- 19
| `-- 20
Меня интересует только сохранение копии снимков, сделанных в период:
08:00 and 09:59
13:00 and 14:59
19:00 and 20:59.
Поэтому я хотел бы создатьCronJobкоторый будет периодически удалять все каталоги с именами «10», «11», «12», «15», «16», «17» и «18».
Я новичок в командах UNIX и много искал. Мне удалось создать эту команду:
find /home/******/public_html/securitycams/* -depth \( -name "10" -or -name "11" -or -name "12" -or -name "15" -or -name "16" -or -name "17" -or -name "18" \) -type d -exec rm -r "{}" \;
Кажется, это работает. Но правильный ли это путь?
решение1
Мне ваша команда кажется хорошей. Но вы могли бы ее немного сократить:
-depth
можно удалить\( -name ... -or -name ... \)
можно сократить- вместо этого
{} \;
вы могли бы использовать{} +
в результате чего будет только один вызовrm
find /home/******/public_html/securitycams -type d -name "1[0-25-8]" -exec rm -r {} +
Если ваши камеры можно настроить на сохранение изображений в период с 08:00 до 20:59, может быть, их можно настроить на сохранение изображений только в период с 08:00 до 09:59, с 13:00 до 14:59 и с 19:00 до 20:59?
Я думаю, что нет "правильного способа" сделать это. Если cron job работает для вас, почему бы и нет?