POP HOSTING

Disco cheio no servidor Linux: como achar o que ocupa espaço imprimir

  • disco cheio, du, df, espaço em disco, no space left on device, inodes, lsof, vps
  • 0

Disco do servidor Linux cheio? Veja como descobrir em minutos qual pasta ou arquivo ocupa o espaço com df, du, find e lsof, e como liberar sem riscos.

  • Tempo: 10 min
  • Nível: Intermediário
  • Vale para: VPS, cloud e dedicados com AlmaLinux, Rocky, Ubuntu ou Debian
  • Atualizado: outubro de 2026

Disco cheio derruba tudo de uma vez: o MySQL para de gravar, o site mostra erro 500, o e-mail deixa de chegar e às vezes nem o login no painel funciona. Na maioria dos casos o culpado é um só: um log que cresceu sem controle, backups esquecidos, a lixeira de e-mails ou um arquivo apagado que continua aberto. Os comandos abaixo mostram qual é o seu caso.

Antes de começar

  • Acesso SSH como root (veja como acessar o SSH).
  • Não apague nada antes de saber o que é. Em especial, nunca apague arquivos dentro de /var/lib/mysql à mão.

1. Confirme qual partição está cheia

df -h

Olhe a coluna Use% e a coluna Mounted on. Pode ser a raiz (/), o /home, o /boot ou um disco de backup. Daqui para frente, troque / pelo ponto de montagem que está cheio.

Confira também os inodes, que acabam quando há milhões de arquivos pequenos (sessões do PHP, cache, fila de e-mail):

df -i

Se o IUse% estiver em 100%, o problema é quantidade de arquivos, não tamanho. Vá direto para a seção Inodes esgotados, mais abaixo.

2. Descubra a pasta que mais ocupa

sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -15

O -x faz o du ficar só na partição escolhida (ele não soma outros discos montados dentro dela) e o sort -h põe a maior pasta no fim da lista. Depois, desça um nível de cada vez pela pasta campeã:

sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -15
sudo du -xh --max-depth=1 /var/log 2>/dev/null | sort -h | tail -15

Repita até chegar ao arquivo ou pasta responsável. Em servidores grandes o du pode levar alguns minutos.

Dica: o ncdu faz a mesma coisa de forma interativa, navegando com as setas. Instale com sudo apt install ncdu no Ubuntu ou sudo dnf install ncdu no AlmaLinux e no Rocky (repositório EPEL) e rode sudo ncdu -x /.

3. Liste os maiores arquivos

sudo find / -xdev -type f -size +500M -exec du -h {} + 2>/dev/null | sort -h | tail -20

Mostra os arquivos acima de 500 MB, do menor para o maior. Logs de vários gigabytes, arquivos .tar.gz de backup e imagens de disco aparecem aqui.

4. O df diz cheio, mas o du não acha nada: arquivo apagado e ainda aberto

Quando você apaga um log que um serviço ainda está usando, o nome some, mas o espaço só é liberado quando o processo fecha o arquivo. Para listar esses arquivos:

sudo lsof -nP +L1

Se o lsof não estiver instalado, use sudo find /proc/*/fd -ls 2>/dev/null | grep '(deleted)'. A solução é reiniciar o serviço que segura o arquivo (por exemplo, sudo systemctl restart httpd). Se não puder reiniciar, esvazie o arquivo pelo descritor, usando o PID e o número do FD que aparecem no lsof:

sudo truncate -s 0 /proc/1234/fd/5
Atenção: para limpar um log em uso, esvazie em vez de apagar: sudo truncate -s 0 /var/log/arquivo.log. Apagar com rm é justamente o que cria o problema acima.

Onde o espaço costuma estar

LocalO que éComo liberar
/var/log/journalLogs do systemdsudo journalctl --vacuum-size=500M
/var/logLogs de serviços e de scripts própriosEsvazie com truncate e corrija o que gera erro em excesso
/var/lib/mysqlBancos e logs binários (no MySQL 8 eles vêm ligados e ficam 30 dias)Pelo próprio MySQL, nunca com rm
/backup e /home/*/backup-*Backups do WHM ou gerados à mãoMova para fora do servidor e apague os antigos
/home/*/mailCaixas de e-mail das contasLimpe lixeira e spam pelo Webmail
/var/cache/dnf e /var/cache/aptPacotes baixadossudo dnf clean all ou sudo apt clean
/var/lib/dockerImagens e contêineres paradosdocker system df para ver; docker system prune para limpar
Caso real: um script que falhava em loop gravava a mensagem de erro inteira no próprio log a cada tentativa, e o arquivo passou de 3 TB, crescendo vários gigabytes por hora. Esvaziar o log resolve na hora, mas o disco volta a encher se a causa do erro não for corrigida. Sempre olhe o fim do arquivo (tail -50 arquivo.log) antes de limpar.

Inodes esgotados

Para achar a pasta com mais arquivos:

sudo du --inodes -x --max-depth=1 / 2>/dev/null | sort -n | tail -10

Os suspeitos mais comuns são pastas de sessão do PHP, cache de aplicações e filas de e-mail travadas. Apague os arquivos antigos de forma controlada, por exemplo os com mais de 7 dias:

sudo find /caminho/da/pasta -type f -mtime +7 -delete

Problemas comuns

O disco tem espaço livre, mas a partição raiz está cheia

O espaço está em outra partição ou sobrando no LVM. Rode lsblk e sudo vgs: se a coluna VFree mostrar espaço, dá para entregá-lo à raiz. Veja como expandir o disco e a partição.

Apaguei arquivos e o df não mudou

É o caso do arquivo apagado e ainda aberto (passo 4). Reinicie o serviço que estava usando o arquivo.

O df mostra 100% mas ainda sobra um pouco de espaço

Em ext4, cerca de 5% do disco fica reservado para o root, para que o sistema continue funcionando quando o disco enche. Não use essa reserva como solução: libere espaço de verdade.

Precisa de mais espaço em disco? Veja os servidores dedicados da POP Hosting, com acesso root e suporte em português.

Esta resposta lhe foi útil?
« Retornar