Comando du do Linux: Estimando Espaço de Arquivos

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos o comando du (disk usage) no Linux, uma ferramenta poderosa para estimar e analisar o uso de espaço em disco. Imagine que você é um administrador de sistemas encarregado de gerenciar um servidor de arquivos que cresce rapidamente. Sua missão é identificar diretórios e arquivos que consomem muito espaço, ajudando a otimizar a utilização do armazenamento. O comando du será sua ferramenta de investigação confiável nesta análise de espaço em disco.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 98%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Entendendo o Básico do du

O comando du é sua primeira linha de defesa para entender o uso do espaço em disco. Vamos começar examinando sua funcionalidade básica.

Primeiro, vamos navegar até o diretório do projeto onde realizaremos nossa investigação:

cd ~/project

Agora, vamos executar um comando du básico:

du

Dicas: Arquivos e pastas são criados aleatoriamente, e seus tamanhos também são aleatórios, portanto, os resultados podem variar cada vez que você o executar.

Você verá uma saída semelhante a esta:

0       ./documents/reports
0       ./documents
10240   ./backups
0       ./logs/archive
0       ./logs/system
5120    ./logs/application
5120    ./logs
15360   .

Cada linha mostra duas informações:

  1. O uso do disco (em KB)
  2. O caminho do diretório correspondente

Os números podem parecer enigmáticos no início. Eles representam o uso do disco em kilobytes (KB). Mas não se preocupe, podemos torná-los mais legíveis!

Vamos executar o comando com a opção -h (human-readable, ou legível por humanos):

du -h

Agora você verá uma saída como esta:

0       ./documents/reports
0       ./documents
10M     ./backups
0       ./logs/archive
0       ./logs/system
5.0M    ./logs/application
5.0M    ./logs
15M     .

A opção -h converte os tamanhos para um formato mais amigável (K para Kilobytes, M para Megabytes, etc.). Isso torna muito mais fácil para nós, humanos, entendermos rapidamente.

Alguns pontos a observar:

  • O . no final representa o diretório atual (~/project neste caso).
  • O uso de disco de um diretório inclui o uso de todos os seus subdiretórios.
  • Os tamanhos que você vê podem ser ligeiramente diferentes, pois o script de configuração gera tamanhos de arquivo aleatórios.

Investigando Diretórios Específicos

Agora que entendemos o básico, vamos mergulhar mais fundo em diretórios específicos. Vamos focar no diretório logs, que parece estar usando uma quantidade significativa de espaço.

Primeiro, vamos mudar para o diretório de logs:

cd ~/project/logs

Agora, vamos usar o du para examinar este diretório:

du -h

Você pode ver uma saída como esta:

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

Isso nos dá um detalhamento do uso de disco para cada subdiretório dentro do diretório de logs. Mas e se quisermos ver apenas o total do diretório de logs?

Podemos usar a opção --max-depth para limitar a profundidade com que o du analisa a estrutura de diretórios:

du -h --max-depth=0

Isso exibirá apenas o total do diretório atual:

5.0M    .

O --max-depth=0 diz ao du para mostrar apenas o diretório atual, sem entrar em nenhum subdiretório.

Para ver apenas os subdiretórios imediatos, use --max-depth=1:

du -h --max-depth=1

Saída:

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

Isso nos dá uma imagem mais clara de quais subdiretórios estão usando mais espaço.

A opção --max-depth é particularmente útil quando você está lidando com estruturas de diretórios profundamente aninhadas e deseja focar em um nível específico da hierarquia.

Ordenando e Analisando o Uso de Disco

Agora que identificamos os subdiretórios que usam mais espaço, vamos aprender como ordenar os resultados. Isso nos ajudará a identificar rapidamente os maiores consumidores de espaço em disco.

Usaremos o comando sort em combinação com o du. Não se preocupe se você não estiver familiarizado com o sort - explicaremos como ele funciona.

Primeiro, vamos ordenar a saída do du pelo tamanho:

du -h | sort -h

Este comando faz duas coisas:

  1. du -h: Executa o comando de uso de disco com saída legível por humanos.
  2. |: Isso é um pipe (tubo). Ele pega a saída do comando à esquerda e a envia como entrada para o comando à direita.
  3. sort -h: Ordena a entrada numericamente com base em tamanhos legíveis por humanos.

Você pode ver uma saída como esta:

0       ./archive
0       ./system
5.0M    .
5.0M    ./application

A saída é ordenada do menor para o maior. Mas, muitas vezes, estamos mais interessados nos maiores diretórios primeiro. Para inverter a ordem, podemos adicionar a opção -r ao sort:

du -h | sort -hr

Saída:

5.0M    ./application
5.0M    .
0       ./system
0       ./archive

Agora podemos ver claramente quais subdiretórios dentro da pasta de logs estão usando mais espaço, em ordem decrescente.

Para focar apenas nos subdiretórios imediatos e ordená-los, podemos combinar as técnicas que aprendemos:

du -h --max-depth=1 | sort -hr

Este comando mostrará e ordenará apenas os subdiretórios imediatos do diretório atual.

Lembre-se, o poder da linha de comando vem da combinação de comandos simples para realizar operações complexas. Acabamos de combinar du, sort e várias opções para analisar rapidamente o uso do disco!

Encontrando os Maiores Arquivos

Até agora, estivemos olhando para os tamanhos dos diretórios. Mas e se quisermos encontrar os arquivos específicos que estão ocupando mais espaço? O comando du trabalha principalmente com diretórios, mas podemos combiná-lo com outros comandos para encontrar arquivos grandes.

Usaremos o comando find junto com o du. Não se preocupe se você não estiver familiarizado com o find - explicaremos como ele funciona.

Primeiro, vamos navegar de volta para o diretório do projeto:

cd ~/project

Agora, vamos usar o find e o du para localizar os maiores arquivos:

find . -type f -exec du -h {} + | sort -hr | head -n 5

Este comando pode parecer complexo, mas vamos decompô-lo:

  1. find . -type f: Encontra todos os arquivos (-type f) no diretório atual (.) e seus subdiretórios.
  2. -exec du -h {} +: Executa du -h em cada arquivo encontrado. O {} é substituído pelo nome do arquivo, e o + diz ao find para passar o máximo de nomes de arquivos possível para cada invocação do du.
  3. sort -hr: Ordena os resultados por tamanho em ordem reversa (maior primeiro).
  4. head -n 5: Mostra apenas os 5 primeiros resultados.

Você pode ver uma saída como esta:

10M     ./backups/large_backup.bak
5.0M    ./logs/application/large_app_log.log
0       ./logs/system/placeholder.log
0       ./logs/archive/placeholder.log
0       ./logs/application/placeholder.log

Esta saída nos mostra os cinco maiores arquivos no diretório do projeto e seus tamanhos.

Para focar em arquivos maiores que um tamanho específico, podemos modificar nosso comando. Vamos encontrar arquivos maiores que 1MB:

find . -type f -size +1M -exec du -h {} + | sort -hr

Este comando adiciona -size +1M para filtrar arquivos maiores que 1 megabyte.

Esses comandos são incrivelmente úteis quando você está tentando liberar espaço em disco. Eles permitem identificar rapidamente os maiores arquivos, que geralmente são os melhores candidatos para exclusão ou arquivamento.

Gerando um Relatório de Uso de Disco

Como etapa final em nossa investigação de espaço em disco, vamos criar um relatório abrangente de uso de disco para todo o diretório do projeto. Este relatório nos ajudará a resumir nossas descobertas e apresentá-las à equipe.

Primeiro, vamos garantir que estamos no diretório do projeto:

cd ~/project

Agora, vamos criar um relatório detalhado usando o du e salvá-lo em um arquivo:

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

Vamos decompor este comando:

  1. du -h --max-depth=2: Mostra o uso do disco até dois níveis de profundidade em formato legível por humanos.
  2. sort -hr: Ordena os resultados por tamanho em ordem reversa (maior primeiro).
  3. > disk_usage_report.txt: Salva a saída em um arquivo chamado disk_usage_report.txt. O > é chamado de operador de redirecionamento - ele pega a saída que normalmente iria para a tela e a "redireciona" para um arquivo.

Agora que criamos nosso relatório, vamos visualizar seu conteúdo:

cat disk_usage_report.txt

Você deve ver uma lista abrangente de diretórios e seus tamanhos, ordenados do maior para o menor.

Para obter um resumo dos maiores diretórios, podemos usar o comando head para visualizar apenas as primeiras entradas:

head -n 10 disk_usage_report.txt

Isso mostrará os 10 maiores diretórios em seu projeto.

Este relatório é uma ferramenta valiosa para identificar quais áreas do seu projeto estão consumindo mais espaço em disco. Ele pode ajudar a orientar seus esforços na otimização do uso do armazenamento ou em discussões com sua equipe sobre alocação de recursos.

Resumo

Neste laboratório, exploramos o poderoso comando du e suas aplicações no gerenciamento de espaço em disco. Aprendemos como:

  1. Usar o comando du básico para estimar o uso do disco.
  2. Tornar a saída legível por humanos com a opção -h.
  3. Investigar diretórios específicos e limitar a profundidade com --max-depth.
  4. Ordenar e analisar os resultados do uso de disco.
  5. Encontrar os maiores arquivos em um diretório.
  6. Gerar relatórios abrangentes de uso de disco.

Essas habilidades são essenciais para qualquer administrador de sistemas ou usuário avançado que gerencia recursos de armazenamento.

Opções adicionais do du não cobertas neste laboratório incluem:

  • -s: Exibe apenas o total para cada argumento.
  • -c: Produz um total geral.
  • -a: Mostra o uso de disco para arquivos, bem como para diretórios.
  • --time: Mostra a hora da última modificação para cada diretório.
  • --exclude=PADRÃO: Exclui arquivos ou diretórios que correspondam ao PADRÃO.