Rastrear o tamanho de um diretório ao longo do tempo

4

Eu tenho um diretório e quero registrar, a partir de agora, seu tamanho todos os dias. Ou seja, a qualquer hora do dia, todos os dias, quero calcular o tamanho desse diretório e anexá-lo em algum arquivo junto com a data.

NOTA: Por tamanho do diretório quero dizer o tamanho de todo o conteúdo, de forma recursiva.

Qual é a maneira recomendada de fazer isso?

    
por becko 03.07.2018 / 14:19

1 resposta

8

Você pode executar algo du a partir de um cron job. Com as ferramentas GNU, du -sb dir/ lhe daria o tamanho em bytes do diretório e todos os arquivos dentro dele, recursivamente (mais o nome do diretório, mas podemos removê-lo). E você pode obter a data com date . Por exemplo,

$ printf "$(date +"%F %T") $(du -sb /tmp)\n" 
2018-07-03 15:25:57 24246930    /tmp

Em seguida, coloque isso em uma tarefa cron e direcione a saída para um arquivo. Uma entrada crontab para ser executada às 06:00 todos os dias poderia ser algo assim (de Claro, estou usando apenas /tmp aqui como apenas um exemplo):

0 6 * * * printf "$(date +"\%F \%T") $(du -sb /tmp)\n" >> /tmp/tmp-size.log

Os sinais de porcentagem precisam ser ignorados por cron .

Você pode usar du -sk para kilobytes ou du -sh para saída em escala automática "legível". As opções aceitas por du podem ser diferentes em outro sistema.

Use algo como du ... | sed -e 's/[[:blank:]].*//' , se quiser remover o nome do caminho que du imprime.

    
por 03.07.2018 / 14:27