Como obter o tamanho de um diretório no Linux

Como obter o tamanho de um diretório no Linux
Saber o tamanho de um diretório no Linux não é tão direto quanto parece. O comando "ls -s" listará os arquivos e subdiretos com seus tamanhos. No entanto, os tamanhos (cerca de 4096 bytes) dados para os diretórios não são uso de disco. O tamanho visto para um diretório é o tamanho dos metadados do diretório.

Metadados são dados sobre dados. O tamanho aparente é o tamanho dos dados que são importantes para o usuário comum do computador. O conteúdo (texto) das cartas, imagens, vídeos, etc., constituir o tamanho aparente. Esses dados não são mantidos arbitrariamente no computador. Os dados de tamanho aparente devem ser mantidos de maneira controle. Deve ser identificável. Deve estar completo. Existem outros requisitos para isso. Alguns dados extras são necessários para atingir esses requisitos extras, e esses dados extras são os metadados.

Lembre -se, existe apenas um diretório em um volume. O resto são subdiretorias. O diretório raiz dá origem a subdiretos, que dão origem a outros subdiretos que estão descendo. No entanto, os subdiretos geralmente são simplesmente chamados de diretórios. E assim, existe apenas uma árvore de diretório.

Portanto, "LS -s" não é útil para obter o tamanho de um diretório. Qual comando então é útil? - O comando du. "DU" significa uso de disco. Imprime o uso de disco do diretório.

Este artigo explica as diferentes características do comando DU no Linux, que fornece as diferentes maneiras do programador de conhecer os tamanhos dos diretórios e seus subdiretos. Bash é o shell usado para as amostras de código deste artigo.

Conteúdo do artigo

  • DU sem opção ou argumento
  • Tamanho de outros diretórios
  • tamanho aparente
  • O comando sudo
  • Excluindo entradas por tamanho
  • exclude = padrão
  • Conclusão

DU sem opção ou argumento

O diretório de trabalho atual é o diretório em que o usuário está atualmente trabalhando em. O prompt normalmente mostra o diretório de trabalho atual. Digitando DU sem qualquer opção e argumento, assim:

du

e, em seguida, pressionar a tecla Enter exibirá o uso do disco para todos os subdiretos do diretório de trabalho atual. Ele exibirá essas informações para a sub-árvore do diretório de trabalho atual. Um ponto na tela representa o diretório de trabalho atual.

Cada caminho da sub-árvore é representado em uma linha, na tela. Cada linha começa com o tamanho do diretório (que é sobrenome no caminho). A tela pode ser algo como:

8 ./DIR1/DIR2/DIR3/DIR4
12 ./DIR1/DIR2/DIR3
16 ./DIR1/DIR2
20 ./dir1

Observe que não está claro se o tamanho está em bytes ou kilobytes ou megabytes ou gigabytes. Kilobytes de símbolo, K significa 1024 bytes; Megabytes de símbolo, m significa 1.048.576 bytes; Gigabytes de símbolo, G significa 1.073.741.824 bytes. Para que os múltiplos sejam indicados, a opção -h (switch) deve ser usada, como segue:

du -h

A tela ficaria assim:

8.0k ./DIR1/DIR2/DIR3/DIR4
12k ./DIR1/DIR2/DIR3
16K ./DIR1/DIR2
20k ./dir1

Quando a opção -h é usada, diz -se que os tamanhos estão de forma legível.

Nota: Com a opção -verl, o comando DU também fornecerá uso de disco para arquivos; No entanto, o uso de disco para arquivos não será abordado neste artigo.

Tamanho de outros diretórios

Um caminho absoluto típico para um volume Linux é o seguinte:

/Home/John/Dirone/Dirtwo/Dirthree/Dirfour

O primeiro / é o diretório raiz. Este diretório possui subdiretos imediatos, incluindo o diretório doméstico. O diretório doméstico tem o diretório do usuário. Se o nome do usuário é John, ele pode nomear o diretório do usuário, John. O diretório do usuário é identificado por ~. Portanto, o usuário pode usar o comando "CD ~" para alcançar seu diretório de qualquer diretório. Dirone é um diretório criado pelo usuário. O usuário também pode criar outros diretórios neste nível. Dirtwo, Dirthree e Dirfour são subdiretorias para seus diretórios anteriores, criados pelo usuário.

O usuário pode saber o tamanho de qualquer outro diretório e seus subdiretos (sub-árvore) de qualquer diretório, ignorando o caminho absoluto como argumento. Por exemplo, se o uso do disco for necessário,

/Home/John/Dirone/Dirtwo

Então o comando seria:

du -h/home/john/dirone/Dirtwo

ou

du -h ~/dirone/Dirtwo

onde ~ representa o diretório do usuário.

Para usar um caminho relativo, o usuário já deve estar no diretório pai correspondente. Por exemplo, se o prompt estiver aparecendo,

John@host: ~/dirone $

Significando que o usuário está no diretório/home/John/dirone, então o comando a seguir dará o mesmo resultado que o comando acima:

du -h sutwo

Os caminhos ainda seriam relativos. Para exibir as mesmas informações para o diretório atual, use nenhum argumento ou use o ponto.

Este esquema pode ser usado para obter o tamanho de apenas um diretório, o último em um caminho (precedido pelo caminho). É possível obter o tamanho de um diretório no meio de um caminho - consulte "exclude = padrão" abaixo.

Total geral

Um grande tamanho total de todos os diretórios envolvidos pode ser produzido. Para a situação acima, o comando seria:

DU -H -Total

tamanho aparente

O tamanho aparente geralmente é menor que o uso do disco. No entanto, em algumas situações, o tamanho aparente é maior que o uso do disco; Razão - veja mais tarde. O comando para obter os tamanhos aparentes para o caminho relativo acima seria:

Du -h -Dirtwo de tamanho Aparente

Profundidade máxima

Com -Max -Depth = 0, DU imprime o tamanho apenas do diretório de trabalho atual; Com Du -max-Depth = 1, DU imprime o tamanho do diretório de trabalho atual e os tamanhos de todos os seus subdiretos de primeiro nível; Com -Max-Depth = 2, DU imprime o tamanho do diretório de trabalho atual e os tamanhos de todos os seus subdiretos de primeiro nível e de todos os seus subdiretos de segundo nível; Com -Max-Depth = 3, DU imprime o tamanho do diretório de trabalho atual e todos os seus subdiretos de primeiro nível, e todos os seus subdiretos de segundo nível e de todos os seus subdiretos de terceiro nível; Isso continua com o aumento do valor da profundidade máxima. Um exemplo de seu uso é:

DU -H -Max -Depth = 2

O comando sudo

Um dos diretórios com seus próprios subdiretos no diretório raiz é var. Se os tipos de usuário

du -h /var

e as prensas entram, ele perceberá que a permissão é negada para alguns diretórios. Isto é, ele não pode conhecer os tamanhos de alguns diretórios. A permissão é negado porque o usuário não é o superusor. O superusuário tem o privilégio de ver os tamanhos (uso de disco) desses diretórios. Portanto, para o usuário adquirir esse privilégio, ele tem que usar o comando sudo da seguinte maneira:

sudo du -h /var

Se o shell pedir ao usuário sua senha, o usuário deverá digitar a senha e pressionar Enter. Com o comando sudo, o usuário comum (programador) pode ver os tamanhos de todos os diretórios no diretório var e diretórios semelhantes.

Excluindo entradas por tamanho

A opção "-Hreshold = tamanho" não permitirá que os diretórios de listagem cujos tamanhos sejam menores que o tamanho. Para o caminho,

/Home/John/Dirone/Dirtwo/Dirthree/Dirfour

Com o prompt em "John@host: ~ $", então

du -h --threshold = 12k dirone

onde 12k significa 12 kilobytes, não exibirá a linha para nenhum diretório cujo uso de disco seja menor que 12k.

-exclude = padrão

Esta opção e valor podem omitir linhas de diretório que o usuário não deseja na listagem.

Para omitir a linha do último diretório, Dirfour do caminho

/Home/John/Dirone/Dirtwo/Dirthree/Dirfour

O comando deve ser:

du -h --exclude = dirone/dirtwo/dirthree/dirfour dirone

O resultado será algo como,

4.0K Dirone/Dirtwo/Dirthree
8.0K DIRONE/DIRTWO
12k Dirone

Nota: Os tamanhos não incluíram o tamanho do diretório de último nível (Dirfour) do caminho.

Para ter apenas os tamanhos dos diretórios de profundidade superior e suas sub-árvores, não possui os diretórios de profundidade mais baixa na opção. Então, com o comando,

du -h --exclude = dirone/dirtwo/dirthree dirone
A saída será algo como,
4.0K DIRONE/DIRTWO
8k Dirone

Nota: Os tamanhos excluíram os tamanhos dos diretórios da alavanca inferior da árvore.

Considere novamente o link absoluto,

/Home/John/Dirone/Dirtwo/Dirthree/Dirfour

O comando a seguir obterá o uso do disco apenas do diretório sujeira, que é um diretório dentro do caminho. O comando é:

du -h --exclude =/home/John/dirone/Dirtwo/*/home/john/dirone/Dirtwo

O argumento tem todos os diretórios anteriores até aquele em questão. O valor de excluir tem todos os diretórios anteriores, terminando com *, logo após o que está em questão. * significa todos os subdiretos nesse nível (e suas sub-árvores). O resultado será algo como,

5.0K/Home/John/Dirone/Dirtwo

Conclusão

Tentando saber o tamanho de um diretório com o comando "ls -s" é enganoso. Com ele, apenas os meta-dados do diretório são obtidos. Para saber o uso do disco de um diretório, o comando DU deve ser usado. Quando usado com a opção -h, os tamanhos dos diretórios são legíveis. O tamanho aparente pode ser obtido usando a opção de tamanho aparente. Sem nenhuma opção e argumento, o comando du apenas exibe os tamanhos de todos os subdiretos do diretório atual, incluindo o do diretório atual. O argumento para "du" é o caminho, que pode começar da raiz. Opções e alguns de seus valores decidem exatamente quais diretórios são abordados. O comando sudo fornece aos privilégios de superusuário do usuário comum por padrão.