Questão Trabalho Cron para excluir arquivos com mais de x dias?


Atualmente estou usando esta tarefa cron para excluir arquivos temporários bloqueados em um local específico. Como posso melhorar isso apenas para excluir arquivos com mais de x dias (por exemplo, 30 dias)?

0 4 * * 0 /bin/rm -fv /home/*/tmp/Cpanel_*


2


origem




Respostas:


Você pode usar find:

find /home/*/tmp/Cpanel_*' -type f \! -newermt "month ago" -delete

find pode ser complicado, então faça sua lição de casa lendo sobre isso e teste bem. A prática comum é testar com um comando que não atua em alvos encontrados, como ls ou echo. find tem alguns comandos incorporados que você pode usar para testes. Então você pode começar com isso:

 find /home/*/tmp/Cpanel_*' -type f \! -newermt "month ago" -ls

6



Boa resposta. Para mais eficiência, você poderia usar o fato de que find pode ter qualquer número de diretórios ou arquivos antes da primeira opção, como em: find /home/*/tmp/Cpanel_* !-newermt "month ago" -delete; Você pode adicionar -maxdepth 0 para garantir que apenas os arquivos da expansão do shell sejam excluídos, sem descender quaisquer diretórios (provavelmente não relevantes aqui). - AFH
Estou recebendo esta mensagem: -bash: !-newermt: event not found Alguma ideia do que isso significa? - IMB
@IMB Isso significa que você está usando o Bash e não consegue encontrar a entrada em seu histórico. Você não precisa do Bash. Usar find como o comando. - Tomasz
@IMB Ou talvez não ... Deve haver um intervalo entre ! e -. Veja a linha atualizada acima. - Tomasz
@IMB E, de fato, deve ser \! -newrmt. - Tomasz