Como ver o tamanho de uma pasta no Linux: comandos para verificar espaço em disco


Como exemplo prático, em uma empresa tem um servidor para guardar arquivos e projetos internos, que basicamente funciona como um repositório interno.
Esse servidor tem um espaço de armazenamento limitado e, de tempos em tempos, é necessário conferir se a pasta do compartilhamento está ficando muito cheia.
Porém, o servidor não possui modo gráfico, então como posso saber o tamanho da pasta de compartilhamento?
Se você precisa verificar o tamanho de uma pasta no Linux ou monitorar o espaço em disco no sistema, este artigo traz as principais formas de visualizar, listar e acompanhar o uso de armazenamento em diretórios e partições.
Comando para ver tamanho de pasta no Linux: como verificar espaço em diretórios
Para descobrir quanto do disco que no diretório está usando basta ir até o terminal e dizer: "por favor, mostre-me o quanto do disco (du, disk usage) o diretório /compartilhamento está usando":
du /compartilhamento/


Conseguimos a informação! Mas, para isso, o terminal mostrou o tamanho de todos os arquivos e subpastas e, só na última, mostrou um resumo do diretório. Precisamos apenas desse resumo final. Existe uma maneira de exibir somente essa última linha?"
Como queremos que o comando sintetize a informação, usamos a opção -s (de summarize):
du -s /compartilhamento/

Veja que agora temos apenas a informação desejada. Mas, o que significa esse número?
A saída padrão do comando du mostra os números em kilobytes. Só que esse número não fica muito compreensível para nós, precisamos deixá-lo mais inteligível para humanos (-h).
Podemos utilizar as duas expressões separadamente, -s -h, ou juntas -sh:
du -sh /compartilhamento/

Ótimo! Conseguimos visualizar o tamanho do nosso diretório. Mas quanto isso ocupa realmente no disco?
Para saber o quanto do disco está sendo usado em geral, outro comando útil no Linux é o df. Ele retorna o espaço livre ou ocupado de cada partição no sistema e ajuda a verificar espaço em disco no Linux.
df
Utilize também o comando `df -h` para ver o espaço disponível e ocupado de maneira legível.

Da mesma forma que fazemos com o du, podemos especificar o diretório, assim, ele retorna somente a partição da qual esse diretório pertence. Podemos também utilizar a opção -h e teremos uma saída mais legível.
df -h /compartilhamento/

Notaram que os valores das saídas dos comandos foram diferentes? Isso ocorre porque o du lista apenas os arquivos e subpastas de um diretório, enquanto o df mostra as informações da partição onde aquele diretório está armazenado, ajudando a ver espaço em disco Linux de forma global.
Hum… Mas dessa forma preciso ficar checando esses dois comandos todos os dias. Existe alguma maneira de automatizar essa tarefa para que, quando esse diretório estiver perto de encher, eu receba uma mensagem?
Como automatizar o monitoramento do espaço em disco no Linux com Shell Script
Podemos automatizar essa tarefa criando um script que o Linux interpretará de tempos em tempos.
Bem, queremos checar o tamanho do diretório, então vamos nomear nosso script com algo que nos lembre isso. No meu caso vou chamar de consulta_tamanho_diretorio.
Podemos especificar dizendo que é um arquivo Shell com a extensão .sh, mas se não colocarmos, o sistema consegue rodá-lo da mesma maneira.
Existem vários tipos de Shell (Bash, Bourne Shell, Korn Shell, Zsh), cada um com suas diferenças. Para nosso script saber qual interpretador utilizar, temos que especificá-lo na primeira linha usando a diretiva shebang (#!).
Um dos shells mais utilizados é o Bash, vamos utilizá-lo. Logo na primeira linha digitamos:
#!/bin/bash
Como queremos visualizar a tamanho ocupado pelo diretório /compartilhamento, temos que fazer nosso script acessá-lo. Portanto: cd /compartilhamento
BASH
#!/bin/bash
cd /compartilhamentoAgora temos que pegar a informação sobre o tamanho do diretório. Já vimos como fazer isso, basta atribuirmos esse valor a uma variável.
O comando que nos retorna o percentual é o df, como queremos saber apenas do diretório compartilhamento, é ele que vamos especificar, já que queremos apenas a informação da porcentagem, não precisamos colocar o parâmetro -h
BASH
#!/bin/bash
cd /compartilhamento
uso_do_diretorio=$(df /compartilhamento)Só que, como vimos, esse comando nos retorna duas linhas, a primeira é um cabeçalho, enquanto a segunda são as informações sobre a partição.
Queremos apenas a informação sobre o uso, que se encontra na coluna 5:

Para conseguir obtê-la, podemos redirecionar a saída do comando df para o comando awk. Como queremos a quinta coluna, falamos para o awk imprimi-lo: awk {'print $5'}
BASH
#!/bin/bash
cd /compartilhamento
uso_do_diretorio=$(df /compartilhamento | awk '{print $5}')Vamos testar essa parte do nosso script. Para isso, imprimimos na tela a variável uso_do_diretorio utilizando o echo "$uso_do_diretorio"
BASH
#!/bin/bash
cd /compartilhamento
uso_do_diretorio=$(df /compartilhamento | awk {'print $5'})
echo $uso_do_diretorio
Hum, funcionou, mas essa variável deveria conter apenas o valor da porcentagem, existe alguma maneira de capturá-lo?
Da mesma forma que usamos para retirar essa informação o comando df. Podemos imprimir essa variável e capturar sua segunda informação.
Basta imprimir a variável, e usar o awk para capturar o parâmetro desejado.
Logo, voltamos ao nosso código e digitamos:
BASH
#!/bin/bash
cd /compartilhamento
uso_do_diretorio=$(df /compartilhamento | awk {'print $5'})
percentual=$(echo "$uso_do_diretorio" | awk '{print $2}')Vamos testar novamente nosso código falando para ele imprimir essa variável:
BASH
#Restante do código omitido
echo "$percentual"
Uhu! Conseguimos! Agora temos que checar se nossa variável percentual está próxima do 100%. Se sim, podemos escrever uma mensagem avisando que o armazenamento está se esgotando.
Checando a variável
Se (if) nossa variável estiver com 70% ou mais, então (then) vamos escrever uma mensagem na tela.
Para realizar essa comparação, vamos utilizar algumas expressões regulares. Nossa variável pode ter valores de 70% até 100%, ou seja, o dígito da dezena pode variar de 7 a 9 ([7-9]) e o da unidade de 0 a 9 ([0-9]), seguido do símbolo de percentual (%).
Essa expressão captura valores de 70% até 99%. Para acrescentarmos o 100%, dizemos que ou é essa expressão ([7-9][0-9]%), ou (|) será utilizado 100% para realizar a comparação.
A expressão completa fica assim:
[7-9][0-9]%|100%
Basta informar essa condição em nosso if:
BASH
#Restante do código omitido
if [[ "$percentual" =~ [7-9][0-9]%$|100% ]]; then
echo "ATENÇÃO - O espaço de armazenamento está ficando cheio"
fiVamos testar nosso script e checar se está funcionando:
Bacana! Está funcionando! Mas dessa maneira, não conseguimos ter um histórico das mensagens. Podemos salvar essa mensagem em um arquivo de log, assim conseguiríamos manter esse histórico.
Para colocar essa informação dentro de um arquivo, na linha onde ele imprime na tela a mensagem, iremos pegá-la e direcioná-la (>>) para o arquivo onde ficará nosso log que, no meu caso, fica em /logs/compartilhamento.log.
BASH
#Restante do código omitido
if [[ $percentual =~ [7-9][0-9]%$|100% ]]; then
echo "ATENÇÃO - O espaço de armazenamento está ficando cheio" >> /logs/compartilhamento.log
fiO bacana é que mesmo que esse arquivo não exista, o programa o cria. Vamos testar nosso código novamente:

Legal! Está funcionando! Mas como saberemos quando essa informação foi registrada? Podemos acrescentar data e hora à mensagem para facilitar o acompanhamento.
Acrescentando data e hora
Para salvar a data no arquivo podemos utilizar o comando date. Este comando pode alterar ou exibir a data e hora do sistema.
Para imprimir a data do sistema, utilizamos o parâmetro %F (Full Date), como é o primeiro parâmetro, colocamos um + na frente, ficando +%F. Esse parâmetro mostra a data do sistema no formato ano-mês-dia.
Vamos acrescentar o parâmetro para mostrar as horas , minutos e segundos, podemos utilizar %T (Time):

date +%F %T
Hum… por que não funcionou?
Quando damos espaço entre os parâmetros, o date não reconhece os que vem após esse espaço. Para resolver esse problema, basta escapar (\) esse espaço:
date +%F\ %T

Agora sim! Conseguimos a informação de data e hora, vamos acrescentá-las em nosso script:
BASH
#Restante do código omitido
if [[ $percentual =~ [7-9][0-9]%$|100% ]]; then
echo "ATENÇÃO - O espaço de armazenamento está ficando cheio $(date +%F\ %T)" >> /logs/compartilhamento.log
fiAgora nosso arquivo terá a informação de data e hora:

Primeira parte concluída! Agora, é necessário executar esse script periodicamente. No Linux, há uma ferramenta chamada cron que permite o agendamento dessas execuções.
Agendando tarefas
Podemos agendar tarefas no cron para elas serem executadas de dias em dias, horas em horas, a cada minuto, enfim da maneira que for melhor para cada situação. Para colocar essa tarefa como automática, temos que editar o arquivo do cron. Portanto, no terminal:
crontab -e

O arquivo do cron é dividido em sete colunas. Minutos, horas, dias do mês, mês, dias da semana, usuário e o comando a ser executado. Cada uma dessas colunas podem receber diferentes valores.
No nosso caso, queremos que esse script seja executado a cada hora. Por isso, na primeira coluna, a dos minutos, colocamos o valor 0, as demais colocamos * (asterisco).
Dessa forma, cada vez que o minuto for 00, ou seja, a cada hora, será executado o comando.
O usuário que irá executar o comando é, no nosso caso, o superusuário (root). No crontab do usuário (editado com 'crontab -e'), não é necessário especificar o usuário, pois o comando sempre executa como o usuário dono do crontab. E o comando será: bash consulta_tamanho_diretorio.sh
Nota importante: executar scripts com privilégios de root requer atenção especial à segurança - sempre valide que o script e o diretório onde ele reside têm permissões adequadas (recomendado: 700 para o script e propriedade root:root) para evitar que usuários não-autorizados modifiquem o script.
Vale lembrar que se o script estiver em outro diretório sem ser o do usuário que irá executá-lo, devemos especificar o caminho até ele.
0 * * * * bash consulta_tamanho_diretorio.sh
Para salvar e sair do arquivo de configuração do cron, pressionamos Esc e depois digitamos :x.
"Mas por que não colocar asterisco em todas as colunas? Assim nosso script não seria executado a todo momento?"
Sim. Dessa forma a cada minuto o script seria executado, porém isso poderia, dependendo do número de requisições que o servidor recebe, sobrecarregaria sua CPU.
Agora nosso arquivo de log sempre será atualizado sobre essa informação.
Vamos olhar o arquivo de log e ver se ele está inserindo a informação:

Como encontrar arquivos ou diretórios grandes no Linux (Dicas extras)
Esse foi apenas um uso exemplo de como usamos Shell Script. Além de escrever essa informação no diretório, poderíamos enviar um e-mail para o administrador do sistema, poderíamos aumentar automaticamente o tamanho do da partição.
Também seria possível criar um script que recebesse o nome do diretório como parâmetro.
Neste exemplo foi utilizado o superusuário (root) para fazer as configurações, mas qualquer pessoa usuária pode criar scripts.
Caso você esteja utilizando o usuário root para fazer os scripts, tenha extremo cuidado para não executar comandos que possam comprometer o sistema. Recomendações de segurança importantes:
- Sempre use caminhos absolutos nos comandos do crontab (ex: /bin/bash, /usr/bin/df);
- Proteja o script com permissões restritivas: chmod 700 e propriedade root:root;
- Valide todas as entradas e variáveis antes de usar em comandos;
- Evite usar variáveis sem aspas para prevenir command injection;
- Considere criar um usuário dedicado com privilégios mínimos necessários ao invés de usar root;
- Monitore os logs do cron em
/var/log/syslogou/var/log/cronpara detectar problemas.
Segundo as diretrizes de segurança do CIS (Center for Internet Security) e práticas documentadas em 2026, o princípio do menor privilégio deve sempre ser aplicado em tarefas automatizadas.
Problema Resolvido
Tínhamos que ficar checando de tempos em tempos se o diretório de compartilhamento estava ficando cheio. Vimos como podemos fazer isso e como automatizar essa tarefa utilizando Shell Script utilizando o cron para agendá-la.
Aqui na Alura temos um curso sobre Shell Script. Nele você aprenderá como automatizar tarefas utilizando, criar estruturas de seleção e repetição, funções e muito mais.
Se você quer se aprofundar ainda mais em administração e comandos Linux, confira nossa Trilha Começando em Linux e nosso curso Linux para cibersegurança.








