0% acharam este documento útil (0 voto)
8 visualizações5 páginas

Script para Calcular Espaço em Diretórios

O script calcula o espaço total ocupado por diretórios, somando apenas aqueles cuja ocupação é maior que um limite definido. Ele percorre uma lista de diretórios, verifica o tamanho de cada um e incrementa a soma total se estiver acima do limite. Ao final, mostra a soma total e estatísticas sobre os diretórios incluídos e excluídos.

Enviado por

shatzup
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
8 visualizações5 páginas

Script para Calcular Espaço em Diretórios

O script calcula o espaço total ocupado por diretórios, somando apenas aqueles cuja ocupação é maior que um limite definido. Ele percorre uma lista de diretórios, verifica o tamanho de cada um e incrementa a soma total se estiver acima do limite. Ao final, mostra a soma total e estatísticas sobre os diretórios incluídos e excluídos.

Enviado por

shatzup
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Exemplo de SCRIPT: Levantamento de espaço ocupado

O SCRIPT terá como finalidade contabilizar o espaço total ocupado pelos arquivos em
determinados diretórios, previamente configurados. Porém, só serão contabilizados
aqueles diretórios cuja ocupação for superior a um determinado limite.

Um exemplo de funcionamento, considerando um limite mínimo 5.000KB:


1) Primeiro diretório avaliado: /bin
• Ocupa 10.000KB → Maior que o limite mínimo de 5.000 → ENTRA NA SOMA
• Soma = 10.000 (Resultado parcial)
2) Segundo diretório avaliado: /etc
• Ocupa 2.000KB → Menor que o limite mínimo de 5.000 → NÃO ENTRA NA SOMA
• Soma = 10.000 (Resultado parcial - Não mudou)
3) Terceiro diretório avaliado: /home
• Ocupa 40.000 → Maior que o limite mínimo de 5.000 → ENTRA NA SOMA
• Soma = 50.000 (Resultado parcial)

O algoritmo acima se repetirá por quantos diretórios forem configurados. Quando


encerrar, a variável ‘Soma’ terá o valor que desejamos conhecer.

Considere o SCRIPT implementado com o uso do ‘for’ para realizar o LOOP.

#!/bin/bash

# A partir de uma lista de diretórios, este script avalia o


# espaço em disco ocupado por cada um deles.
# Os diretórios # que ocuparem espaço acima de um determinado
# limite terão seus tamanhos somados e o resultado é exibido
# ao final.
# Os diretórios cuja ocupação for inferior ao limite não
# são considerados na soma final dos tamanhos.

# Abaixo, variáveis para configurar o comportamento


# do SCRIPT.

# Variável DETALHES, permite definir se o SCRIPT exibirá


# detalhes enquanto executa. Esse tipo de recurso auxilia
# durante o desenvolvimento e na depuração de erros.
# Quando DETALHES=1 as informações são exibidas.
DETALHES=0
# Relação dos diretórios avaliados pelo SCRIPT, um por linha,
# dentro de uma mesma variável $DIRETÓRIOS.
DIRETORIOS="/etc
/home
/lib
/usr/bin
/usr/lib
/usr/local
/usr/sbin
/var/lib
/var/log
/var/spool
/tmp"

# O tamanho mínimo que os arquivos em um diretório devem


# ocupar para que esse tamanho seja considerado na soma
# final.
# Nesse SCRIPT, foi adotada a unidade KBYTES. O comando 'du'
# usará o parâmetro '-k' para que a saída seja em KBYTES.
LIMITE_MIN=5000

# ---------------------------------------------------------
# Desse ponto em diante, não há mais variáveis para
# configuração do SCRIPT por usuários.
# ---------------------------------------------------------
#
# Variáveis auxiliares para o funcionamento do SCRIPT.

# Variável na qual serão acumulados os tamanhos dos


diretórios
# incluídos (Soma total).
TAMANHO_TOTAL=0

# Variável para contar quantos diretórios foram avaliados.


# Será incrementada em uma unidade a cada item na variável
# DIRETORIOS.
CONTADOR_TOTAL=0

# Variável para contar quantos diretórios ocupavam tamanho


# SUPERIOR ao limite e, portanto, entraram na soma total.
CONTADOR_INCLUIDOS=0

# Variável para contar quantos diretórios ocupavam tamanho


# INFERIOR ao limite e, portanto, não entraram na soma total.
CONTADOR_NAO_INCLUIDOS=0
for dir in $DIRETORIOS
do
# Incrementa o $CONTADOR_TOTAL a cada diretório avaliado
((CONTADOR_TOTAL++))

# Utilizando o comando 'du' obtém o tamanho do diretório


# (-k em KBytes).
# A saída é passada, por pipe (|), ao comando 'cut -f1',
# que extrai somente a primeira coluna da resposta,
# correspondente ao tamanho.
# O valor é então armazenado na variável $tamanho
tamanho=$(du -sk $dir | cut -f1)

# Avaliar se o tamanho é maior ou igual ao limite mínimo


# (variável $LIMITE_MIN)
if [[ $tamanho -ge $LIMITE_MIN ]]
then
# Se for maior ou igual:
# 1 - Incrementa em uma unidade o contador de
# diretórios incluídos na soma
# 2 - Soma o tamanho na variável $TAMANHO_TOTAL

((CONTADOR_INCLUIDOS++))
((TAMANHO_TOTAL+=$tamanho))

# Avalia se deve exibir detalhes (variável


# $DETALHES=1 ?)

if [[ $DETALHES -eq 1 ]]
then
# Exibe mensagem com detalhes
echo "+ Diretório incluído na soma: $dir
($tamanho KB) --- Resultado parcial $TAMANHO_TOTAL KB"
fi
else
# Se o tamanho for inferior ao limite, incrementa o
# contador de diretórios não incluídos na soma.

((CONTADOR_NAO_INCLUIDOS++))

# Avalia se deve exibir detalhes (variável


# $DETALHES=1 ?)
if [[ $DETALHES -eq 1 ]]
then
# Exibe mensagem com detalhes
echo "- Diretório não incluído na soma: $dir
($tamanho KB)"
fi
fi
done

# Encerrado o LOOP, exibe o resultado final


echo "RESULTADO"
echo "Total de diretórios avaliados: $CONTADOR_TOTAL"
echo "Total de diretórios incluídos na soma de tamanho:
$CONTADOR_INCLUIDOS"
echo "Total de diretórios não incluídos na soma de tamanho:
$CONTADOR_NAO_INCLUIDOS"
echo "---------------------------------------------------"

# O cálculo (somatório) do espaço ocupado foi feito em


# KBYTES. Para exibir de forma mais adequada, será convertido
# para MBYTES, dividindo-se o valor por 1024.
echo "Tamanho total ocupado pelos diretórios incluídos:
$((TAMANHO_TOTAL/1024)) MB"

# Encerrar o SCRIPT
exit 0

Ao executar o SCRIPT, temos como resultado:

$ sudo ./script12
RESULTADO
Total de diretórios avaliados: 12
Total de diretórios incluídos na soma de tamanho: 4
Total de diretórios não incluídos na soma de tamanho: 8
-----------------------------------------------------
Tamanho total ocupado pelos diretórios incluídos: 908 MB

Observação: Para que funcione adequadamente, execute com o comando ‘sudo’.

No SCRIPT há uma variável de configuração ($DETALHES) que faz com que a execução
seja detalhada. Esse tipo de recurso é muito útil para auxiliar no desenvolvimento e para
fornecer dados para depuração de problemas.

Ao trocar o valor da variável DETALHES para ‘1’ e executar novamente o SCRIPT, temos
a saída:

$ sudo ./script13
- Diretório não incluído na soma: /etc (3191 KB)
- Diretório não incluído na soma: /home (233 KB)
- Diretório não incluído na soma: /lib (0 KB)
+ Diretório incluído na soma: /usr/bin (96812 KB) ---
Resultado parcial 96812KB
+ Diretório incluído na soma: /usr/lib (539917 KB) ---
Resultado parcial 636729KB
- Diretório não incluído na soma: /usr/local (0 KB)
+ Diretório incluído na soma: /usr/sbin (28548 KB) ---
Resultado parcial 665277KB
+ Diretório incluído na soma: /var/lib (264857 KB) ---
Resultado parcial 930134KB
- Diretório não incluído na soma: /var/log (436 KB)
- Diretório não incluído na soma: /var/spool (4 KB)
- Diretório não incluído na soma: /tmp (221 KB)
RESULTADO
Total de diretórios avaliados: 11
Total de diretórios incluídos na soma de tamanho: 4
Total de diretórios não incluídos na soma de tamanho: 7
-----------------------------------------------------
Tamanho total ocupado pelos diretórios incluídos: 908MB

Você também pode gostar