Automatize a movimentação de novos arquivos após um determinado período de tempo

Automatize a movimentação de novos arquivos após um determinado período de tempo

Recebo arquivos através de um serviço em intervalos estranhos e preciso tê-los disponíveis em uma pasta por 72 horas antes de serem arquivados em uma pasta diferente. Eu gostaria de automatizar esse processo. Idealmente, este seria um serviço que monitora a pasta "em uso" em busca de novos arquivos, anota a hora de sua chegada e os move para o arquivo 3 dias depois.

Atualmente, estou executando uma entrada crontab que é executada a cada 72 horas para mover todo o conteúdo da pasta em uso para a pasta de arquivo. Isso causa um problema de sincronização entre a janela de disponibilidade de um determinado arquivo e sua movimentação quando não for mais necessário.

Responder1

Algo assim funcionará:

find /source/location -maxdepth 1 -mtime +3 -type f -exec mv "{}" /destination/location/ \;

Como isso funciona:

  • findprocurará itens em/source/location
  • -maxdepth 1limitará a pesquisa apenas ao diretório especificado, ignorando os subdiretórios
  • -mtime +3limitará os resultados a 3 diasou mais
  • -type flimitará os resultados apenas a arquivos
  • -execirá executar um comando sobre esses resultados, neste caso émv
  • "{}"findé para onde irá o resultado
  • \;informa findque o comando passado execestá completo

Coloque isso em seu cron job e execute-o de hora em hora, se desejar. Somente arquivos com 72 horas ou mais serão movidos

informação relacionada