Skip to main content

duf no Linux: entenda para onde foi o espaço do seu disco sem decifrar o df

07 Novembro 2026
duf no Linux: entenda para onde foi o espaço do seu disco sem decifrar o df

Existe um pequeno ritual compartilhado por praticamente todo administrador Linux.

O servidor começa a se comportar de maneira estranha, alguma aplicação reclama de falta de espaço, o banco de dados fica temperamental e alguém digita:

df -h

Então surge na tela uma coleção de /dev, tmpfs, porcentagens, pontos de montagem e nomes suficientemente longos para fazer uma planilha parecer uma interface amigável.

O df é excelente. Está presente praticamente em todo sistema Unix-like, é previsível e faz seu trabalho há décadas.

Bonito, entretanto, nunca foi uma de suas obrigações.

É justamente aí que entra o duf, abreviação de Disk Usage/Free Utility. A ferramenta nasceu com uma proposta bastante simples: mostrar as mesmas informações fundamentais sobre armazenamento de uma maneira mais organizada, colorida e imediatamente compreensível.

Em vez de transformar a consulta de espaço em disco em um pequeno exercício de interpretação textual, o duf apresenta os filesystems em tabelas bem organizadas, agrupa dispositivos por categoria, permite ordenar e filtrar resultados e até produz saída JSON para automações.

É, essencialmente, o df depois de fazer um curso de UX.

Neste guia vamos aprender como instalar o duf, entender sua saída, filtrar discos e filesystems, analisar inodes, organizar resultados, criar alertas visuais e utilizar a ferramenta em servidores Linux.


O que é o duf?

O duf é uma ferramenta de linha de comando criada por Christian Muehlhaeuser, conhecido como muesli, escrita em Go e distribuída como software livre.

Seu objetivo é funcionar como uma alternativa moderna e amigável ao tradicional:

df

ou, mais frequentemente:

df -h

Ao executar simplesmente:

duf

a ferramenta identifica os filesystems disponíveis e apresenta informações como:

Filesystem
Tipo
Tamanho total
Espaço utilizado
Espaço disponível
Percentual de utilização
Ponto de montagem

Além disso, separa automaticamente diferentes tipos de armazenamento em grupos.

Isso ajuda bastante em máquinas onde o df devolve dezenas de linhas contendo discos locais, tmpfs, volumes temporários, mounts de containers e filesystems de rede.

O resultado é um diagnóstico muito mais rápido.


Antes de continuar: duf não é du e também não é ncdu

Aqui existe uma diferença importante.

O nome pode induzir a pensar que o duf procura arquivos gigantes ou diretórios que estão consumindo espaço. Não é exatamente isso.

O duf responde perguntas como:

Quanto espaço ainda existe em /?

Meu /home está ficando cheio?

Qual volume está montado em /mnt/storage?

Quanto espaço existe naquele NFS?

Estou sem espaço em disco ou sem inodes?

Já ferramentas como:

du

e:

ncdu

respondem outra pergunta:

O que, exatamente, está consumindo esse espaço?

Imagine que o duf informe:

/dev/sda2     250 GB     238 GB     12 GB     95%

Agora sabemos qual filesystem está cheio.

Então podemos usar:

ncdu /

para descobrir quem está ocupando esses 238 GB.

É uma excelente dupla:

duf
 ↓
Onde está faltando espaço?

ncdu
 ↓
Quem está consumindo o espaço?

Um aponta o bairro. O outro encontra o apartamento.


Instalando o duf no Linux

Uma das vantagens do duf é estar disponível diretamente nos repositórios de várias distribuições importantes.

Ubuntu

Em versões Ubuntu 22.04 ou posteriores:

sudo apt update
sudo apt install duf

Depois confirme:

duf --version

Debian

No Debian 12 ou posterior:

sudo apt update
sudo apt install duf

Execute:

duf

Fedora

No Fedora:

sudo dnf install duf

Depois:

duf

Arch Linux

No Arch e distribuições que utilizem seus repositórios:

sudo pacman -S duf

Depois:

duf

Nix

nix-env -iA nixpkgs.duf

Void Linux

sudo xbps-install -S duf

Gentoo

sudo emerge sys-fs/duf

Solus

sudo eopkg it duf

Instalando manualmente por pacote

O projeto também publica pacotes pré-compilados nos formatos:

.deb
.rpm
.apk

Isso pode ser útil em sistemas nos quais o repositório da distribuição possui uma versão antiga ou simplesmente não oferece o pacote.

Em Debian ou Ubuntu, depois de baixar um .deb, prefira:

sudo apt install ./duf_versao_linux_amd64.deb

Usar apt dessa maneira é geralmente mais interessante do que:

sudo dpkg -i pacote.deb

porque o apt pode resolver dependências caso sejam necessárias.

Em Fedora, RHEL, Rocky Linux ou AlmaLinux:

sudo dnf install ./duf_versao_linux_amd64.rpm

Novamente, o dnf é preferível ao rpm -i para instalações comuns porque integra melhor o pacote ao gerenciamento do sistema.


Compilando o duf a partir do código-fonte

Para quem prefere compilar diretamente, o projeto requer uma instalação funcional do Go.

Clone o repositório:

git clone https://github.com/muesli/duf.git

Entre no diretório:

cd duf

Compile:

go build

O executável será criado no diretório atual.

Isso é especialmente útil para desenvolvimento, testes ou quando você deseja utilizar código ainda não empacotado pela distribuição.

Para a maioria dos usuários, entretanto, o pacote da própria distro continua sendo o caminho mais simples.


O primeiro duf

Depois da instalação, execute:

duf

Só isso.

Não precisa informar disco, pasta, opções ou sacrificar um teclado mecânico durante a lua cheia.

O programa coleta os filesystems montados e apresenta uma tabela organizada.

Você verá informações semelhantes a:

╭──────────────────────────────────────────────────────────╮
│ 1 local device                                          │
├────────────┬────────┬────────┬────────┬───────┬──────────┤
│ MOUNTED ON │   SIZE │   USED │  AVAIL │ USE%  │ TYPE     │
├────────────┼────────┼────────┼────────┼───────┼──────────┤
│ /          │ 220.0G │ 143.2G │  76.8G │ 65%   │ ext4     │
╰────────────┴────────┴────────┴────────┴───────┴──────────╯

A disposição exata depende da versão, do terminal e dos dispositivos encontrados.

O duf também adapta automaticamente sua apresentação à largura e ao tema do terminal.


Entendendo as principais informações

O primeiro passo para usar o duf bem é entender o que ele está tentando dizer.

Filesystem

Representa o dispositivo ou filesystem correspondente.

Você poderá encontrar algo como:

/dev/sda2
/dev/nvme0n1p2
/dev/mapper/vg-root
server:/storage

Esse nome identifica onde o filesystem realmente está.


Mountpoint

É o lugar da árvore de diretórios onde aquele filesystem foi montado.

Exemplos:

/
/home
/boot
/mnt/storage
/backup

No Linux, discos não aparecem como C:, D: ou E:.

Eles são incorporados à árvore do filesystem através dos pontos de montagem.


Size

Mostra a capacidade total.

Exemplo:

500G

Quer dizer que aquele filesystem possui aproximadamente 500 GB.


Used

É o espaço atualmente ocupado:

412G

Avail

É o espaço disponível:

88G

Em um servidor, essa costuma ser uma das colunas mais importantes.

Quando ela começa a chegar perigosamente perto de zero, várias aplicações podem começar a demonstrar personalidade própria.


Usage

Mostra o percentual utilizado.

Por exemplo:

82%

O duf usa cores para facilitar essa interpretação.

Um volume saudável pode aparecer destacado de maneira diferente de outro chegando ao limite.

Isso permite identificar situações críticas praticamente de relance.


Type

Mostra o tipo do filesystem.

Alguns exemplos comuns são:

ext4
xfs
btrfs
tmpfs
vfat
nfs
overlay

Isso é particularmente útil em servidores com armazenamento local, volumes de rede e containers coexistindo.


Analisando um caminho específico

Você não é obrigado a listar tudo.

O duf aceita caminhos como argumento:

duf /home

Também pode verificar um arquivo:

duf /var/log/syslog

Ou vários caminhos:

duf / /home /backup

Nesse caso, ele mostra apenas os dispositivos ou pontos de montagem associados aos caminhos indicados.

É muito útil em scripts e investigações rápidas.

Por exemplo:

duf /var/lib/mysql

Isso permite descobrir imediatamente em qual filesystem seu banco de dados está armazenado e quanto espaço ainda existe naquele volume.


Mostrando absolutamente tudo com --all

Por padrão, o duf tenta poupar você de uma quantidade considerável de ruído.

Se quiser mostrar também filesystems duplicados, pseudo-filesystems, mounts especiais e dispositivos que normalmente seriam ocultados:

duf --all

É o equivalente administrativo de dizer:

Não filtre nada. Eu quero ver o caos.

Essa opção é excelente para troubleshooting mais profundo, especialmente em servidores com containers, binds, loops ou montagens incomuns.

Para uma consulta cotidiana, porém, a saída padrão costuma ser muito mais agradável.


Filtrando tipos de dispositivos

Um dos melhores recursos do duf é separar e filtrar os diferentes grupos de armazenamento.

Os principais grupos incluem:

local
network
fuse
special
loops
binds

Você pode pedir para mostrar somente alguns deles.

Por exemplo, apenas discos locais:

duf --only local

Discos locais e armazenamento de rede:

duf --only local,network

Se estiver investigando mounts de rede:

duf --only network

Isso pode ser muito útil em servidores que montam:

NFS
SMB/CIFS
storage remoto
NAS

Escondendo grupos

Também podemos fazer o inverso.

Por exemplo:

duf --hide network

Ou:

duf --hide special,loops

Em máquinas com Docker, Kubernetes ou outras tecnologias que geram muitos mounts, esses filtros podem deixar a saída consideravelmente mais limpa.


Filtrando pelo tipo de filesystem

Imagine que você queira enxergar somente filesystems ext4:

duf --only-fs ext4

Ou apenas:

duf --only-fs ext4,xfs

Também podemos esconder tipos específicos.

Por exemplo:

duf --hide-fs tmpfs

Ou:

duf --hide-fs tmpfs,vfat

Isso é particularmente útil quando queremos nos concentrar apenas em storage persistente.


Filtrando por ponto de montagem

Talvez você não esteja interessado no tipo do filesystem, mas em locais específicos.

Para mostrar somente /, /home e /backup:

duf --only-mp /,/home,/backup

Para esconder determinados mounts:

duf --hide-mp /boot,/boot/efi

Podemos usar wildcards.

Por exemplo:

duf --only-mp '/sys/*,/dev/*'

Observe as aspas.

Elas são importantes porque evitam que o próprio shell expanda o * antes que o argumento seja entregue ao duf.


Ordenando os resultados

Em um servidor com muitos volumes, listar dados não basta.

Queremos colocar os suspeitos no começo da fila.

Para ordenar pelo tamanho:

duf --sort size

Pelo espaço utilizado:

duf --sort used

Pelo espaço disponível:

duf --sort avail

Ou pelo percentual de utilização:

duf --sort usage

Esse último é especialmente interessante:

duf --sort usage

Em um servidor com vários volumes, você consegue descobrir rapidamente quais estão mais próximos do limite.

Também podemos ordenar usando:

mountpoint
size
used
avail
usage
inodes
inodes_used
inodes_avail
inodes_usage
type
filesystem

Mostrando apenas as colunas realmente úteis

Talvez você não precise de todas as informações.

Podemos definir explicitamente quais colunas devem ser exibidas:

duf --output mountpoint,size,usage

Uma saída minimalista para administração diária pode ser:

duf --output filesystem,mountpoint,size,used,avail,usage

Enquanto um script pode precisar de algo ainda mais compacto:

duf --output mountpoint,avail

As colunas suportadas incluem:

mountpoint
size
used
avail
usage
inodes
inodes_used
inodes_avail
inodes_usage
type
filesystem

Essa capacidade torna o duf bastante agradável tanto para humanos quanto para scripts.

Uma combinação particularmente útil é:

duf --sort usage --output mountpoint,size,used,avail,usage

Em português administrativo:

Mostre só o que interessa e coloque os discos mais preocupantes em evidência.


Espaço livre não é tudo: conheça os inodes

Existe um problema de armazenamento Linux que costuma confundir bastante quem está começando.

Imagine que:

duf

mostre vários gigabytes disponíveis.

Mesmo assim, ao tentar criar um arquivo, o sistema informa:

No space left on device

Você olha novamente.

Ainda existem gigabytes livres.

É nessa hora que o Linux começa a parecer estar mentindo.

Mas provavelmente o problema não está nos blocos de armazenamento.

Está nos inodes.


O que é um inode?

De maneira simplificada, filesystems Linux utilizam estruturas chamadas inodes para armazenar metadados sobre arquivos e diretórios.

Um filesystem pode ter:

100 GB livres

mas nenhum inode disponível.

Isso costuma acontecer quando existem milhões de arquivos pequenos.

É relativamente comum em:

caches
sessões
filas
spools
aplicações web mal comportadas
diretórios temporários

Ou naquele projeto JavaScript que, aparentemente, decidiu instalar metade da internet dentro de node_modules.


Verificando inodes com o duf

Execute:

duf --inodes

A ferramenta passa a apresentar informações relacionadas aos inodes em vez do uso tradicional em blocos.

Podemos ordenar pela utilização:

duf --inodes --sort inodes_usage

Ou mostrar apenas informações relevantes:

duf --inodes --output mountpoint,inodes,inodes_used,inodes_avail,inodes_usage

Esse comando pode resolver rapidamente situações aparentemente inexplicáveis.


Personalizando as cores

O duf tenta identificar automaticamente o tema do terminal.

Caso o resultado não fique bom, podemos indicar explicitamente um tema.

Por exemplo:

duf --theme light

Isso é útil em terminais de fundo claro onde a detecção automática não produziu contraste adequado.


Criando limites visuais personalizados

O duf altera as cores das colunas de disponibilidade e utilização conforme determinados limites.

Esses limites também podem ser personalizados.

Espaço disponível

Por exemplo:

duf --avail-threshold="10G,1G"

Aqui estamos criando dois patamares de disponibilidade.

Isso permite adequar o alerta à realidade da máquina.

Um notebook com SSD de 128 GB e um storage de 100 TB obviamente não deveriam considerar exatamente os mesmos valores absolutos como críticos.


Percentual utilizado

Também podemos definir limites por percentual:

duf --usage-threshold="0.5,0.9"

Nesse exemplo, estamos usando:

50%
90%

como limites visuais.

Em um servidor, poderíamos usar algo mais próximo de:

duf --usage-threshold="0.8,0.9"

Assim, volumes com utilização elevada chamam mais atenção.


Um comando bastante útil para servidores

Para uma inspeção rápida:

duf --only local --sort usage

Esse comando:

ignora grupos que não sejam armazenamento local
organiza os volumes pela utilização
mantém a apresentação visual do duf

Se quisermos reduzir ainda mais a informação:

duf \
  --only local \
  --sort usage \
  --output mountpoint,size,used,avail,usage

É praticamente um painel de capacidade de storage dentro do terminal.


Descobrindo se o problema é realmente espaço em disco

Suponha que uma aplicação esteja apresentando:

No space left on device

Comece com:

duf

Procure volumes próximos de:

90%
95%
100%

Se não houver nenhum:

duf --inodes

Se o percentual de inodes estiver próximo de 100%, você encontrou o provável culpado.

Se houver um filesystem realmente cheio, identifique o ponto de montagem.

Imagine:

/var

Agora podemos partir para uma ferramenta de análise de diretórios:

sudo ncdu /var

Esse fluxo é excelente:

duf
↓
Qual filesystem está cheio?

duf --inodes
↓
É espaço ou quantidade de arquivos?

ncdu
↓
Qual diretório está consumindo tudo?

Com essas três perguntas já é possível resolver uma parcela surpreendentemente grande dos incidentes de armazenamento em Linux.


duf em servidores Docker

Ambientes com containers podem gerar uma quantidade considerável de mounts.

Dependendo da configuração, executar:

duf --all

pode revelar vários filesystems adicionais.

Se a intenção for verificar apenas o storage principal:

duf --only local

Se você suspeita que o volume contendo Docker está cheio, verifique diretamente:

duf /var/lib/docker

Assim o duf informa qual filesystem sustenta esse diretório.

Depois podemos investigar o conteúdo:

sudo ncdu /var/lib/docker

Mas atenção: não saia apagando arquivos manualmente dentro de /var/lib/docker.

Gerencie imagens, containers, volumes e caches utilizando as ferramentas do próprio Docker.

O duf diagnostica. Ele não concede imunidade contra decisões criativas em produção.


Verificando armazenamento de rede

Se o servidor possui NFS ou outros filesystems remotos:

duf --only network

Isso fornece uma visão limpa dos volumes de rede.

É especialmente útil em:

servidores de backup
clusters
NAS
ambientes de virtualização
servidores de mídia
infraestruturas compartilhadas

Em vez de procurar manualmente cada mount remoto, o duf já agrupa essas informações.


Produzindo saída JSON

O duf não serve apenas para humanos.

Execute:

duf --json

A saída é produzida em JSON.

Isso abre algumas possibilidades interessantes:

scripts de monitoramento
inventário de servidores
dashboards
pipelines
auditorias
automação
integrações

Por exemplo:

duf --json > storage.json

Agora temos um snapshot estruturado:

cat storage.json

Com jq, podemos processá-lo programaticamente.

Por exemplo:

duf --json | jq

A grande vantagem é evitar a velha prática de tentar interpretar a saída visual de ferramentas com awk, grep, sed, duas expressões regulares e uma quantidade pouco saudável de otimismo.

Quando um programa oferece JSON, use o JSON.

Seu eu do futuro agradecerá.


Usando duf por SSH

Uma das aplicações mais interessantes é a administração remota.

Conecte-se:

ssh usuario@servidor

E execute:

duf

Como ele funciona inteiramente no terminal, praticamente não há sobrecarga de interface.

Você pode fazer uma checagem rápida:

duf --only local --sort usage

ou verificar inodes:

duf --inodes

Em segundos você obtém uma visão geral da capacidade da máquina.


Posso usar duf em scripts de monitoramento?

Sim.

Apesar de o principal apelo da ferramenta ser sua saída amigável para humanos, o suporte a JSON torna o duf muito interessante para automação.

Uma abordagem seria:

duf --json > /var/log/storage-snapshot.json

Ou incorporar a saída em scripts que alimentem outro sistema.

Para monitoramento contínuo de produção, naturalmente existem soluções especializadas como:

Prometheus
Zabbix
Nagios
Grafana
Icinga

O duf não pretende substituir essas plataformas.

Ele é excelente para:

diagnóstico rápido
scripts simples
auditoria
inventário
troubleshooting

Um pequeno toolkit de diagnóstico

Alguns comandos que vale guardar:

Ver tudo normalmente:

duf

Somente armazenamento local:

duf --only local

Ordenar por utilização:

duf --sort usage

Mostrar apenas o essencial:

duf --output mountpoint,size,used,avail,usage

Ver inodes:

duf --inodes

Investigar /var:

duf /var

Ver storage de rede:

duf --only network

Mostrar absolutamente tudo:

duf --all

Gerar JSON:

duf --json

Combinação útil para servidores:

duf \
  --only local \
  --sort usage \
  --output mountpoint,size,used,avail,usage

Quando usar df, duf, du ou ncdu?

Essas ferramentas não precisam competir.

Cada uma tem um papel.

Ferramenta Melhor utilização
df Consulta universal, simples e disponível praticamente em qualquer Unix
duf Visão geral clara e organizada dos filesystems
du Análise programável do tamanho de arquivos e diretórios
ncdu Exploração interativa para encontrar diretórios grandes

Um administrador pode perfeitamente fazer:

duf

descobrir que /var está em 96% e então:

sudo ncdu /var

para encontrar a causa.

Não é preciso escolher um lado.

Ferramentas Linux vivem muito melhor quando trabalham em equipe.


Problema com Oh My Zsh

Existe uma pequena pegadinha para usuários do Oh My Zsh.

Algumas configurações já definem um alias chamado:

duf

Nesse caso, ao instalar o programa, o shell pode continuar executando o alias em vez do binário.

Para remover o alias da sessão atual:

unalias duf

Depois teste:

duf

Se funcionar, procure onde o alias está sendo definido na sua configuração do Zsh e remova ou renomeie essa definição.

É um daqueles raros momentos em que o problema não é Linux, storage nem filesystem.

É apenas um nome ocupado.


Algumas boas práticas

O duf é uma ferramenta de visualização. Ele não remove dados e não corrige automaticamente um filesystem cheio.

Isso é bom.

Quando encontrar um volume crítico, primeiro descubra o motivo antes de sair apagando arquivos.

Em /var, por exemplo, o consumo pode vir de:

logs
cache de pacotes
containers
bancos de dados
backups
filas
arquivos temporários

Cada caso exige uma abordagem diferente.

Também é prudente não esperar o armazenamento chegar a 100% para agir.

Filesystems completamente cheios podem causar problemas em:

bancos de dados
logs
sessões
atualizações
serviços web
containers
filas
processos do sistema

Em servidores, 100% de utilização raramente significa apenas “não consigo salvar mais um arquivo”.

Pode significar “a noite ficou interessante”.


Conclusão: às vezes o melhor diagnóstico começa com uma tabela bonita

O Linux sempre teve ferramentas excelentes para observar armazenamento.

O problema nunca foi falta de informação.

Às vezes era a forma como essa informação chegava até nós.

O duf pega uma tarefa clássica — descobrir quanto espaço existe nos filesystems — e a transforma em uma experiência muito mais rápida de interpretar. Ele organiza volumes, diferencia storage local e remoto, permite ordenar e filtrar resultados, analisa inodes, adapta a saída ao terminal e ainda conversa com scripts através de JSON.

Para uma checagem cotidiana, basta:

duf

Se algo estiver suspeito:

duf --only local --sort usage

Se houver espaço livre, mas o sistema insistir que não consegue criar arquivos:

duf --inodes

E, depois que descobrir qual filesystem está cheio, ferramentas como o ncdu podem ajudar a encontrar quem está consumindo o espaço.

O duf não substitui todas as ferramentas tradicionais de armazenamento do Linux — e nem deveria.

Ele simplesmente torna uma das perguntas mais antigas da administração de sistemas muito mais agradável de responder:

“Quanto espaço ainda temos?”

Porque descobrir que o servidor está com 99% de utilização já é desagradável o suficiente.

Não precisamos sofrer também para ler a tabela.