Skip to Content
DocumentaçãoOperaçõesAdministração do SistemaAnálise de espaço em disco

Para onde foi o espaço em disco: análise e limpeza

O aviso de “disco quase cheio” acaba acontecendo com todo usuário de Ubuntu. A parte chata é que o df diz que está cheio, mas não o que ocupou o espaço. Esta é a ordem reproduzível: primeiro localizar, depois limpar.

Passo 1: quão cheio está de verdade

df -h

Observe a coluna Use%, principalmente para / (o sistema de arquivos raiz) e /home, se for uma partição separada.

O equivalente gráfico é a barra de uso no Discos depois de selecionar uma partição, ou a barra de capacidade na parte inferior da barra lateral do gerenciador de arquivos.

Passo 2: encontre os diretórios grandes

O du consegue calcular isso, mas você acaba adivinhando um nível por vez:

# Size of each subdirectory here, largest first du -h --max-depth=1 . | sort -hr | head

O Disk Usage Analyzer (baobab) varre a árvore inteira de uma vez e é muito mais fácil de ler:

sudo apt install baobab baobab /home/$USER

Ele começa a varredura pelo caminho que você informar e, ao terminar, mostra isto:

Disk Usage Analyzer showing a folder list where snap takes 87.29 percent and 113.9 MB and .cache 12.13 percent, next to a rings chart with 130.5 MB in the centre and Rings Chart / Treemap Chart tabs
Disk Usage Analyzer: a sorted list with percentages on the left, the ring chart on the right, and any ring can be clicked to drill down

Como interpretar:

  • A lista da esquerda é ordenada por tamanho; expanda as linhas seta por seta e você obtém os caminhos exatos, o que é melhor do que clicar nos anéis
  • Treemap Chart, no canto inferior direito, transforma proporções em áreas, então o maior bloco fica evidente num relance
  • Esta captura é de uma VM recém-instalada em que só o snap ocupa 87% — não é bug: cada app Snap mantém várias revisões
Tip

Varrer o ~ leva segundos; varrer o / leva minutos, porque percorre o sistema inteiro. Comece pelo ~ e só varra o / quando isso não explicar o uso.

Passo 3: limpe os suspeitos de sempre

Revisões antigas do Snap

O Snap mantém as últimas revisões para que você possa reverter, e cada uma é uma cópia completa do programa. É daí que vêm os 87% acima.

# Keep 2 revisions instead of the default 3 sudo snap set system refresh.retain=2 # Remove every disabled revision sudo snap list --all | awk '/disabled/{print $1, $3}' | while read name rev; do sudo snap remove "$name" --revision="$rev" done

Pacotes baixados

# Empty /var/cache/apt/archives sudo apt clean # Drop dependencies nothing needs any more sudo apt autoremove --purge

Journal do systemd

Os logs do journalctl podem chegar a vários GB:

# Keep at most 200 MB sudo journalctl --vacuum-size=200M # Or keep only 7 days sudo journalctl --vacuum-time=7d

Caches de usuário

Navegadores, miniaturas e caches de aplicativos ficam todos em ~/.cache:

du -h --max-depth=1 ~/.cache | sort -hr | head

Pense antes de apagar: os caches dos navegadores se reabastecem sob demanda e normalmente mantêm você conectado, enquanto ~/.cache/thumbnails é sempre seguro de remover.

Passo 4: quando a limpeza não basta

A limpeza ganha tempo; espaço de verdade significa aumentar ou mover:

  • Máquinas virtuais: aumente o disco virtual nas configurações da VM e depois expanda a partição (growpart e resize2fs)
  • Máquinas físicas: adicione um disco e formate/monte-o — veja Discos, montagem e fstab
  • Mover dados: mova diretórios grandes como ~/Downloads ou a raiz de dados do Docker para o novo disco e monte-os via fstab

FAQ

O df diz cheio, mas o du soma bem menos

O caso clássico: um arquivo foi apagado, mas um processo ainda o mantém aberto, então o espaço só é liberado quando esse processo termina.

# Find deleted files that are still open sudo lsof +L1 2>/dev/null | head

O culpado de sempre é um escritor de log ainda em execução; reinicie o serviço responsável (sudo systemctl restart <service>).

“No space left on device”, mas o df mostra espaço livre

Provavelmente esgotamento de inodes, típico com números enormes de arquivos pequenos (spools de e-mail, camadas de contêiner).

# Check inode usage df -i

Se IUse% estiver em 100%, esse é o seu problema; a solução é o mesmo tipo de limpeza, só que o que você precisa apagar são muitos arquivos pequenos, não os grandes.

Automatizando a limpeza

O systemd-tmpfiles já limpa o /tmp e alguns caches. Para agendar a limpeza do cache do apt, adicione uma entrada no cron:

# Clean the apt cache every Sunday at 03:00 0 3 * * 0 root /usr/bin/apt clean

Salve como /etc/cron.d/apt-clean.

Relacionados

Last updated on