Dica rápida: Como saber o espaço ocupado por um diretório

Se você precisa movimentar muitos arquivos via linha de comandos a primeira pergunta (ou uma das primeiras perguntas) que você deve responder a si mesmo é “qual o espaço ocupado por estes arquivos?”. Sem esta informação você poderá iniciar uma tarefa que não será concluída, caso o volume de dados seja maior do que a mídia de destino possa comportar. Vou deixar aqui duas dicas então para responder rapidamente esta pergunta.

Comando “du”

O comando “du” (de “Disk Usage”) está disponível em praticamente toda distribuição Linux como parte de seu conjunto básico de ferramentas. Sua finalidade é estimar o espaço ocupado pelos arquivos em um diretório informado e a sua sintaxe é bastante simples:

du [parâmetros] [diretório]

Omitindo os parâmetros o que se tem é uma simples listagem com o conteúdo do diretório e seus respectivos tamanhos em kilobytes.

Por exemplo, para eu saber o tamanho do diretório de imagens do meu Virtualbox, eu posso usar o comando “du” assim:

du   VirtualBox\ VMs
120	VirtualBox VMs/phoenixos/Logs
128	VirtualBox VMs/phoenixos
24	VirtualBox VMs/Novo grupo/wel-wel
532	VirtualBox VMs/Novo grupo/vcenter
620	VirtualBox VMs/Novo grupo/debian-teste-login-ldap/Logs
571456	VirtualBox VMs/Novo grupo/debian-teste-login-ldap/Snapshots
2633468	VirtualBox VMs/Novo grupo/debian-teste-login-ldap
2634024	VirtualBox VMs/Novo grupo
732	VirtualBox VMs/teste-ansible/Logs
5145024	VirtualBox VMs/teste-ansible/Snapshots
10276096	VirtualBox VMs/teste-ansible
12910248	VirtualBox VMs

Perceba que é uma listagem um tanto … “talvez irrelevante” se você não pretende redirecionar isso para algum filtro ou outra ferramenta que fará algo com isso.

Escolhendo em Bytes, KB, MB ou automático

É aqui que entram os parâmetros, como por exemplo os “-b”, “-k”, “-m” ou “-h” que respectivamente exibirão os tamanhos em “bytes”, “kilobytes”, “megabytes” ou “humanizados”.

du -h   VirtualBox\ VMs
120K	VirtualBox VMs/phoenixos/Logs
128K	VirtualBox VMs/phoenixos
24K	VirtualBox VMs/Novo grupo/wel-wel
532K	VirtualBox VMs/Novo grupo/vcenter
620K	VirtualBox VMs/Novo grupo/debian-teste-login-ldap/Logs
559M	VirtualBox VMs/Novo grupo/debian-teste-login-ldap/Snapshots
2,6G	VirtualBox VMs/Novo grupo/debian-teste-login-ldap
2,6G	VirtualBox VMs/Novo grupo
732K	VirtualBox VMs/teste-ansible/Logs
5,0G	VirtualBox VMs/teste-ansible/Snapshots
9,9G	VirtualBox VMs/teste-ansible
13G	VirtualBox VMs

Limitando a profundidade da contabilização

Perceba que a listagem vai descendo a estrutura de diretórios até o último nível existente, mas dependendo da minha necessidade talvez o tamanho apenas do primeiro nível de diretórios já atenda. Neste caso o parâmetro “–depth” ou “-d” pode ajudar, como segue:

du -h -d1   VirtualBox\ VMs
128K	VirtualBox VMs/phoenixos
2,6G	VirtualBox VMs/Novo grupo
9,9G	VirtualBox VMs/teste-ansible
13G	VirtualBox VMs

O parâmetro “-d1” especifica que a listagem deve considerar apenas um nível na hierarquia. Pode-se alterar o número de níveis conforme desejado. Ou ainda usar o “-d0” ou “-s” para ter apenas o diretório especificado.

du -h -d0   VirtualBox\ VMs
13G	VirtualBox VMs
du -h -s VirtualBox\ VMs
13G VirtualBox VMs

Perceba nos dois exemplos acima que a saída é a mesma.

Usando filtro

Se precisarmos um filtro simples é possível ainda usar o argumento “–exclude” para desconsiderar itens da listagem, como no exemplo abaixo onde excluí da listagem todo o resultado do diretório “Novo grupo”:

du -h --exclude 'Novo grupo'   VirtualBox\ VMs
120K	VirtualBox VMs/phoenixos/Logs
128K	VirtualBox VMs/phoenixos
732K	VirtualBox VMs/teste-ansible/Logs
5,0G	VirtualBox VMs/teste-ansible/Snapshots
9,9G	VirtualBox VMs/teste-ansible
9,9G	VirtualBox VMs

A quantidade de argumentos possíveis de uso não é tão grande porém são bastante versáteis. Consulte a página de manual (man du) ou a tela de ajuda do comando (du –help) para mais obter informações sobre os argumentos disponíveis.

Comando “ncdu”

O comando “ncdu” (NCurses Disk Usage) não está disponível por padrão, sendo necessário instálar o seu pacote, caso deseje usa-lo.

Ele possui uma quantidade de parâmetros bem menor do que o comando “du”, no entanto ele permite executar uma navegação visual nos diretórios atrás de sua interface “ncurses” que possibilita a interação via teclas direcionais e demais para alteração da listagem em tempo real.

A imagem abaixo exibe a saída do comando “ncdu” para listar o conteúdo do diretório “VirtualBox VMs” exatamente como feito no primeiro exemplo para o comando “du”:

Figura 1: Saída do comando “ncdu VirtualBox VMs” e com as informações do subdiretório “phoenixos”

Teclas de navegação e operação

Após a listagem, é possível usar as setas direcionais do teclado para selecionar algum diretório de interesse e então usar algumas teclas para ver mais detalhes.

No exemplo exibido, eu pressionei a tecla “I” para mais informações, mas poderia ter teclado:

  • ENTER para entrar neste diretório e então ver o seu conteúdo, ou
  • “n” para ordenar a listagem pelos nomes,
  • “r” para varrer novamente os diretórios (útil caso o diretório esteja sendo modificado, ou até mesmo
  • “d” para “deletar/remover” o diretório escolhido (sim, tome cuidado com isso ou você poderá remover o que não deve).

Há outras teclas além destas e para conhecê-las basta teclar “?” para ver uma listagem com todas elas, ou ainda “q” para sair.

Por hora é só

Há outras formas para se obter o tamanho dos diretórios, como por exemplo o “Baobab” que roda em ambiente gráfico (Gnome), mas estas são as formas mais triviais, além do mais, em ambas se necessário, você pode usar o bom e velho “|” para redirecionar as saídas para outras ferramentas e modelar o resultado conforme necessário.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.