04 nov 2026 · linux, disco · 4 min
duf e dust: onde foi o espaço do disco
du responde “quanto pesa este diretório” e df responde “quanto sobra no disco”. São duas perguntas diferentes e as ferramentas novas não substituem as duas: duf é um df mais legível e dust é um du que desenha a árvore. No mesmo diretório de teste com 28 MiB de arquivos, du -sh * e dust . concordaram em 28 MiB, enquanto duf . e df -h . mostraram o sistema de arquivos de 95.8 GiB. A diferença de tempo apareceu no /usr: 3.2 s para o du contra 0.7 s para o dust, em 136122 entradas e 3.8 GiB.
O que cada um responde
df(eduf): espaço do sistema de arquivos. Responde “vai caber mais alguma coisa neste disco?”.du(edust): peso de um diretório ou arquivo. Responde “o que está comendo o espaço?”.
Confundir os dois é o erro mais comum. duf . não diz quanto o diretório pesa; diz quanto o disco inteiro tem. dust não diz quanto sobra no disco; diz onde foi o espaço.
O artefato: comparar os quatro
Um script que roda os quatro no mesmo alvo e deixa a saída lado a lado. Funciona mesmo se duf ou dust não estiverem instalados: avisa e segue.
#!/usr/bin/env bash
set -euo pipefail
ALVO="${1:-.}"
echo "===== df (sistema de arquivos) ====="
df -h "$ALVO"
echo
echo "===== du (peso do alvo) ====="
du -sh "$ALVO" 2>/dev/null
echo "--- maiores entradas ---"
du -sh "$ALVO"/* 2>/dev/null | sort -h | tail -n 20
if command -v duf >/dev/null 2>&1; then
echo
echo "===== duf (df legível, com cores e JSON) ====="
duf "$ALVO"
echo "--- saida em JSON ---"
duf --json "$ALVO" | head -n 5
else
echo
echo "duf não instalado. Debian/Ubuntu: apt install duf. Binário: github.com/muesli/duf/releases"
fi
if command -v dust >/dev/null 2>&1; then
echo
echo "===== dust (du em árvore, com barras) ====="
dust -n 20 "$ALVO"
echo "--- só arquivos, sem diretórios ---"
dust -F -n 10 "$ALVO"
else
echo
echo "dust não instalado. Cargo: cargo install du-dust. Binário: github.com/bootandy/dust/releases"
fi
Instalação
- duf:
apt install dufno Debian 12 e Ubuntu 22.04 em diante. Binários em github.com/muesli/duf/releases (MIT). - dust:
cargo install du-dustou binário em github.com/bootandy/dust/releases (Apache 2.0). - Nenhum dos dois é obrigatório.
duedfjá vêm no sistema.
Opções que importam
duf:
--json: saída estruturada, boa para scripts.--only local,networke--hide-fs tmpfs: filtra o que aparece.--sort sizee--output mountpoint,size,usage: ordena e escolhe colunas.--inodes: mostra inodes em vez de blocos.
dust:
-n 20: quantas linhas mostrar (padrão é a altura do terminal).-d 3: profundidade da árvore.-F: só arquivos,-D: só diretórios.-z 10M: ignora entradas menores que 10 MiB.-e '\.log$': só o que casa com a regex;-vexclui.-j: saída em JSON.-x: não cruza sistemas de arquivos (equivale adu -x).
Como verificar
Rode o script num diretório pequeno e confira a concordância.
./compara-disco.sh /tmp
Saída esperada: a linha do du -sh e o total do dust batem (mesmo número, mesmo diretório). O df e o duf mostram o disco, que é maior. Se du e dust discordarem, um dos dois está contando links ou sistemas de arquivos diferentes: use du -x e dust -x.
Se der errado
dufmostra 95.8 GiB para um diretório de 28 MiB: não é erro, é o disco. Useduoudustpara o peso do diretório.dustmais lento queduem disco de rede: aumente os walkers com-T 16. Em NFS de alta latência, mais threads sobrepõem as chamadas stat.- Caracteres estranhos no terminal:
dust -cdesliga cores;duf --theme lighttroca o tema. permission denieduma única vez: os dois imprimem uma única mensagem de permissão, diferente dodu, que repete por arquivo.- oh-my-zsh define um alias
duf: rodeunalias dufantes de usar o binário.
Medição
No /usr com 136122 entradas e 3.8 GiB, du -sh levou 3.2 s e dust -n 5 levou 0.7 s. O duf levou 0.005 s, mas só porque mostra o sistema de arquivos, não percorre o diretório. A diferença de tempo do dust vem de paralelizar o walk e de não ordenar tudo antes de imprimir.
O README do duf documenta todas as opções em github.com/muesli/duf. O dust documenta o arquivo de configuração em github.com/bootandy/dust.
FAQ
duf substitui du? Não. duf é df com cores e JSON. Para peso de diretório, use du ou dust.
dust conta links múltiplas vezes? Não. Dust não conta hard links múltiplas vezes por padrão; use -s para contar o tamanho aparente.
Qual usar em script? du -sb para bytes exatos, ou duf --json / dust -j se quiser estrutura. Evite parsear a saída colorida.
ncdu ainda vale? Sim, quando você quer navegar interativamente e apagar arquivos na hora. dust e du são para olhar e decidir.
Fontes
github.com/muesli/duf (duf 0.9.1, licença MIT, consultado em 04 nov 2026). github.com/bootandy/dust (dust 1.2.7, licença Apache 2.0, consultado em 04 nov 2026). Links internos: /blog/disco-cheio-como-achar.html, /blog/medir-disco-sem-derrubar.html, /blog/ver-o-que-come-a-ram.html, /blog/rsync-copiar-e-retomar.html.