Tenho duas câmeras IP que enviam instantâneos de imagens para um servidor FTP a cada 10 segundos, das 8h às 20h59. A estrutura de diretórios é semelhante a esta:
`-- 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
Estou interessado apenas em manter uma cópia dos instantâneos tirados entre:
08:00 and 09:59
13:00 and 14:59
19:00 and 20:59.
Por isso, gostaria de criar umCronJobisso excluirá periodicamente todos os diretórios denominados "10", "11", "12", "15", "16", "17" e "18".
Sou novato em comandos UNIX e pesquisei bastante. Consegui criar este comando:
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 "{}" \;
Parece funcionar. Mas esse é o caminho correto a seguir?
Responder1
Seu comando parece bom para mim. Mas você pode encurtar um pouco:
-depth
pode ser removido\( -name ... -or -name ... \)
pode ser encurtado- em vez de
{} \;
você poderia usar{} +
resultando em apenas uma invocação derm
find /home/******/public_html/securitycams -type d -name "1[0-25-8]" -exec rm -r {} +
Se suas câmeras podem ser configuradas para armazenar imagens entre 8h e 20h59, talvez elas também possam ser configuradas para armazenar imagens apenas entre 8h e 9h59, 13h e 14h59 e 19h e 20h. :59?
Acho que não existe uma "maneira correta" de fazer isso. Se um cron job funciona para você, por que não?