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”:
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.