Ubuntu lsblk, df e du

Três comandos respondem às perguntas mais comuns sobre armazenamento. lsblk diz quais discos existem, df diz quanto espaço livre sobrou e du diz quem está ocupando o espaço. Nenhum deles altera nada, então você pode usá-los à vontade.

Você vai aprender
  • Como o Linux dá nome aos discos e às partições (nvme0n1p2, sda1…).
  • A ler cada coluna do lsblk, do df e do du.
  • Três formas de descobrir o que está enchendo o disco.
  • O que fazer quando aparece "No space left on device".

Antes dos comandos: disco, partição e sistema de arquivos

Pense num armário. O disco é o armário inteiro (SSD, HD ou pendrive). As partições são as prateleiras: o disco é dividido em pedaços independentes. O sistema de arquivos é a forma como cada prateleira é organizada por dentro (ext4, FAT32, NTFS…).

No Linux, cada disco aparece como um arquivo especial dentro de /dev (de devices, "dispositivos"):

NomeO que é
/dev/nvme0n1O primeiro SSD NVMe (o tipo mais comum em notebooks novos).
/dev/nvme0n1p1A partição 1 desse SSD (p de partition).
/dev/sdaO primeiro disco SATA ou USB (HD, SSD SATA, pendrive). O segundo é sdb, depois sdc…
/dev/sda1A partição 1 do disco sda.
/dev/loop0…"Discos virtuais" usados pelos pacotes Snap. Não são discos de verdade.

Para usar uma partição, o Linux a monta numa pasta, chamada ponto de montagem. A partição principal fica montada em /, e um pendrive costuma aparecer em /media/ana/NOME. Você vai aprender a montar em mount e fstab.


lsblk: quais discos existem

lsblk vem de list block devices, "listar dispositivos de bloco". Dispositivo de bloco é qualquer coisa que guarda dados em blocos: discos, partições, pendrives.

lsblk
O programa. Sem opções, mostra todos os discos e partições em forma de árvore.
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     4K  1 loop /snap/bare/5          « discos virtuais do Snap
loop1         7:1    0  73,9M  1 loop /snap/core22/2045
sda           8:0    1  29,3G  0 disk                       « o pendrive (RM = 1: removível)
└─sda1        8:1    1  29,3G  0 part /media/ana/PENDRIVE
nvme0n1     259:0    0 476,9G  0 disk                       « o SSD do notebook
├─nvme0n1p1 259:1    0     1G  0 part /boot/efi
└─nvme0n1p2 259:2    0 475,9G  0 part /                     « a partição do sistema
ColunaSignificado
NAMENome do dispositivo. Os traços ├─ e └─ mostram que a partição pertence ao disco de cima.
MAJ:MINNúmeros internos do kernel. O 7 identifica os loops; você raramente vai precisar disso.
RMRemovable: 1 se é removível (pendrive, cartão).
SIZETamanho total.
RORead-only: 1 se for somente leitura.
TYPEdisk (disco), part (partição), loop (virtual).
MOUNTPOINTSOnde está montado. Vazio = não montado.

Esconder os loops do Snap: -e7

Num Ubuntu com vários Snaps, a lista de loop fica enorme. A opção -e (de exclude, "excluir") esconde um tipo pelo número; os loops são o tipo 7.

lsblk
O programa.
-e7
Exclui os dispositivos de número 7 (os loops).
$ lsblk -e7
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1  29,3G  0 disk
└─sda1        8:1    1  29,3G  0 part /media/ana/PENDRIVE
nvme0n1     259:0    0 476,9G  0 disk
├─nvme0n1p1 259:1    0     1G  0 part /boot/efi
└─nvme0n1p2 259:2    0 475,9G  0 part /

Ver o sistema de arquivos e o UUID: -f

Com -f (de filesystems), o lsblk mostra o tipo de cada partição, o rótulo (LABEL) e o UUID, um código único que identifica a partição. O UUID é o que você usa no /etc/fstab.

$ lsblk -f -e7
NAME        FSTYPE FSVER LABEL    UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1      vfat   FAT32 PENDRIVE 4A1B-2C3D                              21,7G    26% /media/ana/PENDRIVE
nvme0n1
├─nvme0n1p1 vfat   FAT32          8E3F-1A2B                                 1G     1% /boot/efi
└─nvme0n1p2 ext4   1.0            3f6c1e2a-9b7d-4c1e-8a5f-2d4b6c8e0f12   324G    26% /

FSAVAIL é o espaço livre e FSUSE% é quanto já foi usado. Só aparecem nas partições montadas.

Escolher as colunas: -o

Com -o (de output, "saída") você escolhe só as colunas que quer, na ordem que quiser:

$ lsblk -e7 -o NAME,SIZE,FSTYPE,MOUNTPOINTS
NAME          SIZE FSTYPE MOUNTPOINTS
sda          29,3G
└─sda1       29,3G vfat   /media/ana/PENDRIVE
nvme0n1     476,9G
├─nvme0n1p1     1G vfat   /boot/efi
└─nvme0n1p2 475,9G ext4   /
Descobrir qual é o pendrive

Rode lsblk, conecte o pendrive e rode de novo. O dispositivo que apareceu é ele. Faça isso sempre antes de formatar ou gravar uma ISO: errar o nome apaga o disco errado.

Outro comando parecido é o blkid, que mostra só os UUIDs e tipos. Ele precisa de sudo para ler tudo: sudo blkid.


df: quanto espaço livre sobrou

df vem de disk free, "disco livre". Ele mostra, para cada sistema de arquivos montado, o tamanho, quanto foi usado e quanto sobra.

df
O programa.
-h
Human-readable: tamanhos em K, M, G em vez de blocos de 1 KB.
$ df -h
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
tmpfs           1,6G  2,3M  1,6G   1% /run
/dev/nvme0n1p2  468G  121G  324G  28% /                  « o que importa
tmpfs           7,7G     0  7,7G   0% /dev/shm
/dev/nvme0n1p1  1,1G  6,2M  1,1G   1% /boot/efi
tmpfs           1,6G  132K  1,6G   1% /run/user/1000
ColunaSignificado
Sist. Arq.Qual partição (ou sistema virtual, como tmpfs).
Tam.Tamanho total.
Usado / Disp.Usado e disponível.
Uso%Porcentagem usada. Acima de 90%, comece a limpar.
Montado emA pasta onde a partição aparece.

tmpfs é um "disco" que mora na memória RAM e some ao desligar. Você pode ignorá-lo quando a pergunta for "meu disco está cheio?".

Por que Usado + Disp. não dá o Tam.?

Na linha do /, 121G + 324G = 445G, e não 468G. O ext4 reserva cerca de 5% do espaço para o administrador. Assim o sistema ainda consegue funcionar quando um usuário enche o disco.

Formas diferentes de perguntar a mesma coisa

ComandoO que mostra
df -h /Só a partição onde está a pasta /. Funciona com qualquer pasta: df -h ~.
df -hTAcrescenta a coluna Tipo (ext4, vfat…).
df -h -x tmpfs -x squashfsEsconde os sistemas virtuais e os Snaps.
df -iMostra inodes em vez de bytes (veja "Quando não funciona").
App Analisador de uso de discoA versão gráfica (pacote baobab).
$ df -hT /
Sist. Arq.     Tipo Tam. Usado Disp. Uso% Montado em
/dev/nvme0n1p2 ext4 468G  121G  324G  28% /

Missão: rode df -h e descubra quanto espaço livre a partição / da máquina fictícia tem. Depois rode free -h e compare: o free fala da memória RAM, não do disco.


du: quem está ocupando espaço

df diz que o disco está cheio; du (de disk usage, "uso de disco") diz onde. Ele soma o tamanho dos arquivos de uma pasta.

du
O programa.
-s
Summarize: mostra só o total, em vez de cada subpasta.
-h
Tamanhos legíveis.
~/Downloads
A pasta a medir.
$ du -sh ~/Downloads
6,0G	/home/ana/Downloads

Sem o -s, o du lista todas as subpastas, uma por linha, o que pode ser muito longo.

Um nível de cada vez: -d 1

A opção -d (de depth, "profundidade") limita quantos níveis de pastas o du mostra. Com -d 1, ele mostra só as pastas de primeiro nível e o total.

$ du -h -d 1 ~
4,0K	/home/ana/Modelos
2,1G	/home/ana/Imagens
6,0G	/home/ana/Downloads
1,3G	/home/ana/.cache                « oculta, mas ocupa espaço
84M	/home/ana/Documentos
9,6G	/home/ana                       « total da pasta pessoal

Ordenar pelo tamanho: | sort -h

A saída do du vem fora de ordem. Mandando-a para o sort -h (que entende K, M e G), o maior fica por último:

du -h -d 1 ~
Tamanho de cada pasta de primeiro nível.
|
O pipe: entrega a saída para o próximo comando (veja Pipes).
sort -h
Ordena tamanhos legíveis, do menor para o maior.
| tail -5
Mostra só as 5 últimas linhas: as maiores.
$ du -h -d 1 ~ | sort -h | tail -5
84M	/home/ana/Documentos
1,3G	/home/ana/.cache
2,1G	/home/ana/Imagens
6,0G	/home/ana/Downloads
9,6G	/home/ana

Agora a Ana sabe: o culpado é Downloads. Ela pode repetir o comando dentro dela para descer mais um nível.


Três formas de achar o que enche o disco

Forma 1: du + sort, descendo pasta por pasta

É o método acima. Funciona em qualquer Ubuntu, inclusive em servidor sem interface gráfica.

Forma 2: ncdu, interativo

O ncdu (NCurses Disk Usage) mostra as pastas ordenadas e deixa você navegar com as setas. Instale com sudo apt install ncdu.

$ ncdu ~
--- /home/ana -----------------------------------------
    6,0 GiB [##########] /Downloads
    2,1 GiB [###       ] /Imagens
    1,3 GiB [##        ] /.cache
   84,0 MiB [          ] /Documentos
 Total disk usage:   9,6 GiB  Apparent size:   9,5 GiB  Items: 1834

Use ↑ ↓ para escolher, Enter para entrar na pasta, d para apagar (pede confirmação) e q para sair. A saída acima é ilustrativa.

Forma 3: arquivos grandes com find

Às vezes o problema é um arquivo enorme escondido. O find procura por tamanho:

$ find ~ -type f -size +1G
/home/ana/Downloads/ubuntu-26.04-desktop-amd64.iso

Veja mais em find e locate.

FormaMelhor quando…
du -h -d 1 | sort -hVocê quer saber qual pasta cresceu. Funciona em qualquer lugar.
ncduVocê vai investigar e limpar várias pastas.
find -size +1GVocê suspeita de poucos arquivos gigantes.
Analisador de uso de discoVocê está no desktop e prefere gráficos.

Quando não funciona

"No space left on device"
$ cp video.mp4 ~/Vídeos/
cp: erro de escrita de '/home/ana/Vídeos/video.mp4': Não há espaço disponível no dispositivo

O que aconteceu: a partição encheu. Programas podem travar e o sistema pode não conseguir salvar configurações.

Como confirmar: df -h / mostra Uso% perto de 100%.

Como resolver: ache o culpado com du -h -d 1 ~ | sort -h. Lugares que costumam crescer: ~/Downloads, ~/.cache, a lixeira (~/.local/share/Trash), os logs (sudo journalctl --vacuum-size=200M) e o cache do apt (sudo apt clean). Veja Manutenção.

df diz que há espaço, mas nada pode ser criado
$ df -h /srv
Sist. Arq.     Tam. Usado Disp. Uso% Montado em
/dev/sdb1       20G  9,1G  9,9G  48% /srv
$ df -i /srv
Sist. Arq.      Inodes  IUsado IDisp. IUso% Montado em
/dev/sdb1      1310720 1310720      0  100% /srv          « os inodes acabaram

O que aconteceu: cada arquivo gasta um inode (uma "ficha" que guarda suas informações). Milhões de arquivos pequenos, como caches e sessões, esgotam as fichas antes do espaço.

Como resolver: ache a pasta com mais arquivos e apague o que não serve. Saída ilustrativa.

du mostra "Permission denied"
$ du -sh /etc
du: cannot read directory '/etc/cups/ssl': Permission denied
17M	/etc

O que aconteceu: algumas pastas só o root pode ler. O total mostrado fica menor que o real. Repare que, no Ubuntu 26.04, essa mensagem do du aparece em inglês.

Como resolver: para medir pastas do sistema, use sudo du -sh /etc. Para só esconder os avisos: du -sh /etc 2>/dev/null.

Apaguei um arquivo grande e o espaço não voltou

O que aconteceu: se um programa ainda está com o arquivo aberto (por exemplo, um log que um serviço continua escrevendo), o espaço só é liberado quando o programa fecha o arquivo. Outra possibilidade: o arquivo foi para a lixeira.

Como resolver: esvazie a lixeira, ou reinicie o serviço que usava o arquivo. Para listar arquivos apagados que ainda estão abertos: sudo lsof +L1.


Referência de opções

lsblk

OpçãoDescriçãoExemplo
-fMostra tipo, rótulo, UUID e espaço livrelsblk -f
-e7Esconde os loops do Snaplsblk -e7
-oEscolhe as colunaslsblk -o NAME,SIZE,MOUNTPOINTS
-dSó os discos, sem as partiçõeslsblk -d
-pMostra o caminho completo (/dev/sda1)lsblk -p

df

OpçãoDescriçãoExemplo
-hTamanhos legíveisdf -h
-TMostra o tipo do sistema de arquivosdf -hT
-x TIPOEsconde um tipodf -h -x tmpfs
-iMostra inodesdf -i
--totalAcrescenta uma linha de totaldf -h --total

du

OpçãoDescriçãoExemplo
-sSó o totaldu -sh pasta
-hTamanhos legíveisdu -h
-d NMostra até N níveisdu -h -d 1
-aInclui arquivos, não só pastasdu -ah pasta
-cAcrescenta uma linha de totaldu -ch *.iso
--excludeIgnora um padrãodu -sh --exclude=.cache ~

Exercícios

1. Discos sem os loops

Complete para listar os discos escondendo os dispositivos do Snap:

lsblk

2. Total de uma pasta

Complete para ver só o tamanho total da pasta Imagens, em formato legível:

du ~/Imagens

3. As maiores pastas

Complete para ordenar o resultado do du pelo tamanho:

du -h -d 1 ~ | sort

4. O sistema diz "Não há espaço disponível no dispositivo". Qual comando você roda primeiro?

5. No lsblk, o que é nvme0n1p2?


Resumo

  • lsblk lista discos e partições; -f mostra tipo e UUID; -e7 esconde os Snaps.
  • df -h mostra o espaço livre de cada partição montada.
  • du -sh pasta mede uma pasta; du -h -d 1 | sort -h acha a maior.
  • Disco "cheio" com df mostrando espaço livre: confira os inodes com df -i.
  • Nenhum dos três altera nada: use sem medo.