Existe uma ferramenta padrão para aparar diretórios de cache?

2

Eu quero executar uma tarefa cron que remova entradas antigas em um diretório de cache, para que seu tamanho total seja reduzido a uma certa quantidade de bytes. Eu inventei esse comando shell de uma linha, mas eu estava imaginando: existe uma ferramenta padrão do Linux (como logrotate para logs rotativos) que faz o mesmo?

O oneliner é o seguinte:

find /some/cache/dir -type f -printf "%T@ %s %p\n" | sort -rn | awk '{ s += $2 ; if (s > 100000) print $3 }' | xargs rm

Eu uso o find para reunir o timestamp, o tamanho do arquivo e o caminho de arquivo de cada arquivo. Eu classifico pelo timestamp, os arquivos mais novos primeiro. Eu, então, calculo o tamanho do arquivo cumulativo, enviando arquivos apenas uma vez que um certo limite foi atingido. Os arquivos de saída são então excluídos.

    
por Scato Eggen 06.07.2017 / 11:14

1 resposta

0

Eu nunca vi uma maneira "padrão" de fazer isso - porque não há "padrão" quando se trata de como o conteúdo do cache de aplicativos: duração, espaço total usado, etc. depende de metodologias específicas de cache do dada ferramenta.

O que acontece quando você "corta" algo que está em uso atualmente? Só porque alguma coisa foi armazenada em cache há algum tempo, não significa que ela ainda não está sendo distribuída ... e pode facilmente estar sendo distribuída enquanto você está tentando excluí-la - e isso é uma má idéia tudo ao redor.

Na esmagadora maioria dos casos, você deve usar o gerenciador de configuração do aplicativo (seja ele arquivo de configuração, db etc.) para gerenciar sua própria estratégia de armazenamento em cache.

Eu posso nomear um produto pelo menos onde o arquivo nome armazenado em cache não tem absolutamente nenhuma correlação com os arquivos : e só porque foi armazenado há um mês atrás not significa que ainda não está em uso ativo, porque o aplicativo não atualiza os timestamps em arquivos em cache - nunca. Ele rastreia os acessos acessados há menos tempo, e a maneira de gerenciar o tamanho do cache é limitar o ponto de partição / montagem onde o cache está armazenado (já que ele utilizará até e incluindo todo o espaço disponível em seu diretório de cache). / p>

Não edite os caches do aplicativo, a menos que você realmente saiba o que acontecerá quando você fizer isso.

    
por 10.07.2017 / 20:26