Script de shell para relatório diário de uso de disco

2

Estou fazendo backups em minhas unidades locais. As unidades são montadas na pasta / media. Agora eu quero executar um cron job diariamente, o qual me dirá, em um formato de tabela, quanto disco é usado por certas pastas e quanto espaço livre resta na unidade.

Seria bom se eu pudesse inserir essas informações em um banco de dados e eu pudesse ver essas informações por meio de uma página da Web em locahost.

Estou usando o Ubuntu 10.04.

    
por womble 27.05.2010 / 04:22

3 respostas

0

Este one-liner listará os diretórios de nível superior a partir do diretório em que ele é executado e imprimirá seus tamanhos classificados em MB. Você pode ajustá-lo para o seu gosto.

for d in $(find . -maxdepth 1 -type d); do du -sm $d; done | sort -nk 1

Ajustes simples,

  1. find /dir/path - fará isso para um diretório especificado
  2. du pode ser usado em outras formas, esta fazendo um resumo em MB
  3. Se os seus diretórios tiverem os caracteres de espaço, você pode preceder com, (como mais limpo por Dennis ; obrigado por essa dica)
    IFS=$'\n';
    Eu sou de alguma forma usado para filtros exatas, em vez de globbing; Dennis tem mais ideias
  4. Você pode usar sort -nrk 1 para classificar a saída em ordem decrescente de tamanho
  5. Eu perdi a adição de -mindepth 1 lá,
    Quando você adiciona isso, ele ignora a exibição do tamanho do diretório base ( /dir/path etc) nos resultados

Alguma outra resposta aqui provavelmente lhe dará um bom controle sobre como armazenar isso em bancos de dados e exibir em páginas da web. Eu teria apenas convertido para arquivos CSV e resumos listados com um caminho de arquivo no navegador (mas, isso pode não ser muito ideal para armazenamento e visualização com muitos dados ao longo do tempo).

[meta, consulta de edição: o quarto item aparece como 4 na visualização quando edito essa resposta,
mas diz 1 na visão real. Alguém sabe o que estou perdendo nessa marcação? Isso foi corrigido quando removi as novas linhas no ponto-3,
você precisará olhar para a revisão anterior para ver o que quero dizer aqui ...]

Atualize com noções básicas (com base no seu comentário):

  1. Veja usando o terminal para processamento de linha de comando com o Ubuntu
  2. Depois de iniciar o terminal,
    Alterar para um diretório de interesse (tente algum diretório de exemplo),
    (talvez o seu perfil do firefox por exemplo - cd ./mozilla )
    e, não tente muitas coisas nesse diretório, você poderia quebrar o seu navegador.
  3. Agora copie a primeira linha for-loop de cima e cole-a no prompt de comando nesse terminal
  4. pressione a tecla Enter
  5. veja a saída
  6. Outra referência para obter mais informações sobre como usar a linha de comando para 'scripts', > Tutoriais de Bash Shell no Superusuário

Diga-nos que nível de detalhe você deseja de lá.

    
por 27.05.2010 / 04:29
1

Se você quer o espaço em partições como uma tabela, você pode simplesmente chamar

df -h | column -t

Adicione isto a um crontab com seu endereço de e-mail.df -h | coluna -t

    
por 27.05.2010 / 10:48
0

para uma boa saída em colunas, use o formato de saída POSIX para evitar espaço restrito quando estiver usando sessões remotas usando pts /?

df-hp | coluna -t

    
por 27.05.2010 / 12:49