Domine `df` e `du`: gerencie o espaço em disco no Linux!

Os comandos df e du são ferramentas essenciais no shell Bash, presente em sistemas Linux, macOS e outros baseados em Unix, para monitorar o uso do espaço em disco. Eles oferecem uma maneira prática de identificar quais arquivos e diretórios estão consumindo o armazenamento do seu sistema.

Analisando o Espaço Total, Disponível e Utilizado no Disco

O Bash incorpora dois comandos distintos para inspecionar o espaço em disco. Utilize o comando df (disk free, ou sistemas de arquivos em disco) para obter informações sobre o espaço livre e usado. Já o comando du (disk usage, ou uso do disco) é a ferramenta ideal para descobrir quais arquivos e pastas estão ocupando o espaço em disco.

Para começar, basta digitar df e pressionar Enter no terminal Bash. Os resultados exibirão informações sobre todos os sistemas de arquivos montados. Inicialmente, pode parecer complexo, mas a estrutura é bem clara.

df

Cada linha da saída é dividida em seis colunas:

Sistema de arquivos: Indica o nome do sistema de arquivos.
Blocos de 1K: Exibe a quantidade de blocos de 1K disponíveis neste sistema de arquivos.
Usado: Apresenta o número de blocos de 1K que estão em uso no sistema.
Disponível: Mostra a quantidade de blocos de 1K livres.
% De uso: Indica a porcentagem de espaço utilizado no sistema de arquivos.
Montado em: Apresenta o ponto de montagem do sistema de arquivos.

Para uma leitura mais amigável, substitua a contagem de blocos de 1K pela opção -B (tamanho do bloco). Use df, um espaço e -B seguido por uma letra da escala: K (quilo), M (mega), G (giga), T (tera), P (peta), E (exa), Z (zeta) ou Y (yotta), representando múltiplos de 1024.

Por exemplo, para visualizar o uso do disco em megabytes, use o seguinte comando (sem espaço entre B e M):

df -BM

A opção -h (legível por humanos) instrui o df a escolher a unidade mais apropriada para cada sistema de arquivos, exibindo gigabytes, megabytes ou kilobytes, conforme a necessidade.

df -h

A opção -i (inodes) exibe informações sobre o uso de inodes, estruturas de dados do sistema de arquivos que armazenam metadados sobre arquivos (nome, data de modificação, posição no disco, etc.). Embora não seja usual para todos, é essencial para administradores de sistemas.

df -i

Por padrão, o df mostra informações sobre todos os sistemas de arquivos montados, incluindo pseudo sistemas como /dev/loop, usados para arquivos montados como partições, que podem gerar muitos resultados. Se você utiliza o formato de instalação de aplicativos snap do Ubuntu, poderá ver muitos desses dispositivos. Como não são sistemas de arquivos reais, o espaço disponível sempre será 0.

Para filtrar os resultados, você pode usar a opção -T (tipo de impressão) para exibir o tipo de sistema de arquivos de cada entrada.

df -T

Sabendo o tipo de sistema de arquivos (como squashfs para /dev/loop), podemos excluí-los da saída com a opção -x:

df -x squashfs

Para um resumo total, use a opção --total:

df -x squashfs --total

Use a opção -t (tipo) para exibir apenas sistemas de arquivos de um tipo específico:

df -t ext4

Também é possível especificar sistemas de arquivos pelo nome. No Linux, os nomes de unidades são alfabéticos (/dev/sda, /dev/sdb, etc.) e as partições são numeradas (/dev/sda1 é a primeira partição da unidade /dev/sda). Para ver informações de um sistema de arquivos específico, passe seu nome como parâmetro:

df /dev/sda1

Use curingas (* para qualquer conjunto de caracteres e ? para um único caractere) para examinar múltiplas partições:

df /dev/sda*

Para verificar o tamanho de múltiplos sistemas de arquivos, especifique seus nomes. No exemplo abaixo, consultamos os tamanhos de /dev e /run, com um resumo total:

df -h --total /dev /run

A opção --output permite personalizar as colunas exibidas, listando-as separadas por vírgulas (sem espaços):

source: Nome do sistema de arquivos.
fstype: Tipo do sistema de arquivos.
itotal: Tamanho do sistema em inodes.
iused: Espaço usado em inodes.
iavail: Espaço disponível em inodes.
ipcent: Porcentagem de espaço usado em inodes.
size: Tamanho do sistema em blocos de 1K (padrão).
usado: Espaço usado em blocos de 1K (padrão).
avail: Espaço disponível em blocos de 1K (padrão).
pcent: Porcentagem de espaço usado em blocos de 1K (padrão).
arquivo: Nome do sistema de arquivos (se especificado).
alvo: Ponto de montagem.

O exemplo abaixo exibe informações sobre a primeira partição do primeiro disco, utilizando números legíveis por humanos e as colunas source, fstype, size, used, avail e pcent:

df -h /dev/sda1 --output=source,fstype,size,used,avail,pcent

Para simplificar comandos longos, crie um alias. O comando abaixo define um alias dfc (para df custom):

alias dfc="df -h /dev/sda1 --output=source,fstype,size,used,avail,pcent"

Basta digitar dfc e pressionar Enter para executar o comando completo. Para tornar o alias permanente, adicione-o ao seu arquivo .bashrc ou .bash_aliases.

Se preferir ver todas as informações possíveis, use a opção -a (all) em conjunto com --output (sem especificar colunas):

df -a --output

Para facilitar a análise de grandes saídas, use o comando less para navegar pelos resultados:

df -a --output | less

Analisando o Que Está Usando o Espaço em Disco

Para descobrir quais pastas estão ocupando o espaço no seu computador, comece com o comando df para visualizar o uso geral:

df -h -t ext4

Neste exemplo, 78% do espaço na primeira partição está sendo usado. Use o comando du para listar quais pastas contêm mais dados. Executar o du sem opções listará todos os diretórios e subdiretórios a partir do diretório atual (o que pode gerar uma lista muito longa se executado a partir do seu diretório pessoal).

du

A saída do du é simples, mostrando o tamanho e o nome de cada diretório (em blocos de 1K por padrão). A opção -B permite especificar um tamanho de bloco diferente. O exemplo abaixo utiliza blocos de 1 megabyte:

du -BM

Como no df, a opção -h (legível por humanos) ajusta o tamanho do bloco automaticamente:

du -h

A opção -s (summarize) exibe apenas o total de cada diretório, sem os subdiretórios. O comando abaixo mostra o resumo em formato legível por humanos de todos os diretórios abaixo do diretório atual:

du -h -s *

Para classificar as pastas por tamanho (da maior para a menor), use o seguinte comando, que mostra o tamanho de cada subpasta dentro da pasta “Pictures”:

du -sm Pictures/* | sort -nr

Com df e du, você consegue identificar facilmente o uso do espaço em disco e descobrir o que está consumindo esse espaço. Você poderá tomar decisões informadas sobre a gestão dos seus dados, seja movendo-os para outro local, adicionando mais espaço ou apagando arquivos desnecessários. Para conhecer todas as opções desses comandos, consulte a página do manual do Linux para o comando df e também para o du.