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.
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.
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
sudo truncate -s 0 /var/log/arquivo.log. Apagar com rm é justamente o que cria o problema acima.Onde o espaço costuma estar
| Local | O que é | Como liberar |
|---|---|---|
/var/log/journal | Logs do systemd | sudo journalctl --vacuum-size=500M |
/var/log | Logs de serviços e de scripts próprios | Esvazie com truncate e corrija o que gera erro em excesso |
/var/lib/mysql | Bancos 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ão | Mova para fora do servidor e apague os antigos |
/home/*/mail | Caixas de e-mail das contas | Limpe lixeira e spam pelo Webmail |
/var/cache/dnf e /var/cache/apt | Pacotes baixados | sudo dnf clean all ou sudo apt clean |
/var/lib/docker | Imagens e contêineres parados | docker system df para ver; docker system prune para limpar |
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.