Como obter o tamanho de um diretório no Linux

How Get Size Directory Linux



Saber o tamanho de um diretório no Linux não é tão simples quanto parece. O comando ls -s listará os arquivos e subdiretórios com seus tamanhos. No entanto, os tamanhos (cerca de 4096 bytes) fornecidos para os diretórios não são de uso do 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 importa para o usuário comum do computador. O conteúdo (texto) das cartas, imagens, vídeos etc. do usuário constituem o tamanho aparente. Esses dados não são mantidos arbitrariamente no computador. Os dados de tamanho aparente devem ser mantidos de forma controlada. Deve ser identificável. Deve estar completo. Existem outros requisitos para isso. Alguns dados extras são necessários para atender a esses requisitos extras, e esses dados extras são os metadados.







Lembre-se de que existe apenas um diretório em um volume. O resto são subdiretórios. O diretório raiz dá origem a subdiretórios, que dão origem à queda de outros subdiretórios. No entanto, os subdiretórios geralmente são chamados de diretórios. E assim, há 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. Ele imprime o uso do disco do diretório.



Este artigo explica os diferentes recursos do comando du no Linux, que fornece aos programadores diferentes maneiras de saber os tamanhos dos diretórios e de seus subdiretórios. Bash é o shell usado para os exemplos de código deste artigo.





Conteúdo do Artigo

du sem opção ou argumento

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



do

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

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

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

vinte./dir1

Observe que não está claro se o tamanho está em bytes ou kilobytes ou megabytes ou gigabytes. Quilobytes 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, da seguinte forma:

do -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, os tamanhos estão em um formato legível.

Nota: com a opção –all, o comando du também fornecerá o uso do disco para arquivos; entretanto, o uso do 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:

/casa/João/dizer/dirTwo/dirThree/dirFour

O primeiro / é o diretório raiz. Este diretório possui subdiretórios imediatos, incluindo o diretório inicial. O diretório inicial contém o diretório do usuário. Se o nome do usuário for John, ele poderá nomear o diretório do usuário, john. O diretório do usuário é identificado por ~. Assim, o usuário pode usar o comando cd ~ para acessar seu diretório a partir 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 subdiretórios de seus diretórios anteriores, criados pelo usuário.

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

/casa/João/dizer/dirTwo

então o comando seria:

do -h /casa/João/dizer/dirTwo

ou

do -h~/dizer/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 sendo exibido,

João@host: ~/diga $

significando que o usuário está no diretório / home / john / dirOne, o seguinte comando dará o mesmo resultado que o comando acima:

do -hdirTwo

Os caminhos ainda seriam relativos. Para exibir as mesmas informações para o diretório atual, não 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 = PATTERN abaixo.

Total geral

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

do -h --total

tamanho aparente

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

do -h - tamanho aparentedirTwo

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 subdiretórios de primeiro nível; com –max-depth = 2, du imprime o tamanho do diretório de trabalho atual e os tamanhos de todos os subdiretórios de primeiro nível e de todos os subdiretórios de segundo nível; com –max-depth = 3, du imprime o tamanho do diretório de trabalho atual e todos os subdiretórios de primeiro nível, e todos os subdiretórios de segundo nível, e de todos os subdiretórios de terceiro nível; isso continua com o aumento do valor da profundidade máxima. Um exemplo de seu uso é:

do -h --profundidade máxima=2

O Comando sudo

Um dos diretórios com seus próprios subdiretórios no diretório raiz é o var. Se o usuário digitar

do -h /Onde

e pressiona Enter, ele perceberá que a permissão foi negada para alguns diretórios. Ou seja, ele não pode saber o tamanho de alguns diretórios. A permissão foi negada porque o usuário não é o superusuário. O superusuário tem o privilégio de ver os tamanhos (uso do disco) desses diretórios. Portanto, para que o usuário adquira esse privilégio, ele deve usar o comando sudo da seguinte forma:

sudo do -h /Onde

Se o shell solicitar a senha do usuário, o usuário deve 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 –threshold = SIZE não permitirá listar diretórios cujos tamanhos sejam menores que SIZE. Para o caminho,

/casa/João/dizer/dirTwo/dirThree/dirFour

com o prompt em[email protegido]: ~ $, então

do -h --limiar= 12K dirOne

onde 12K significa 12 kilobytes, não exibirá a linha para nenhum diretório cujo uso de disco seja inferior a 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

/casa/João/dizer/dirTwo/dirThree/dirFour

o comando deve ser:

do -h --excluir= dizer/dirTwo/dirThree/dirFour dirOne

O resultado será algo como,

4,0 K dirOne/dirTwo/dirThree

8,0 K dirOne/dirTwo

12K dirOne

Nota: os tamanhos não incluem 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 tenha os diretórios de profundidade inferior na opção. Então, com o comando,

do -h --excluir= dizer/dirTwo/dirThree dirOne

a saída será algo como,

4,0 K dirOne/dirTwo

8K dirOne

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

Considere novamente, o link absoluto,

/casa/João/dizer/dirTwo/dirThree/dirFour

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

do -h --excluir=/casa/João/dizer/dirTwo/ * /casa/João/dizer/dirTwo

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

5.0K/casa/João/dizer/dirTwo

Conclusão

Tentar saber o tamanho de um diretório com o comando ls -s é enganoso. Com ele, apenas os metadados 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 qualquer opção e argumento, o comando du apenas exibe os tamanhos de todos os subdiretórios do diretório atual, incluindo o do diretório atual. O argumento para du é o caminho, que pode começar na raiz. As opções e alguns de seus valores decidem exatamente quais diretórios são endereçados. O comando sudo concede ao usuário comum privilégios de superusuário por padrão.