O "total" na parte superior de uma listagem ls -l
é a soma dos blocos usados por todos os itens nessa listagem. Você pode obter a contagem de blocos para cada item individual adicionando o sinalizador -s
.
Coisas a serem notadas sobre as contagens de blocos e "total":
-
ls
não relata as contagens de bloco usando o tamanho do bloco do sistema de arquivos (que normalmente é 4096 bytes), mas em unidades de 1024 ou 512 bytes, dependendo da versão (e sinalizadores e às vezes variáveis de ambiente). É por isso que, na maioria dos sistemas modernos, as contagens de bloco relatadas porls
são sempre um múltiplo de 4. -
O tamanho de um diretório não é uma soma recursiva dos tamanhos das coisas contidas nele.
mkdir a mkdir a/b head -9999999999c /dev/urandom > a/b/foo
O que
ls -l a
exibirá? Ele mostraráb
, que é um diretório. E qual é o tamanho deb
? Muito pequeno, provavelmente 4 blocos (1 bloco de sistema de arquivos real) Um diretório não é um tarball; não fisicamente contém os arquivos sob ele. É apenas uma lista de nomes de arquivos e números de inodes. Portanto, a listagem dea
inclui apenasb
, que é pequena, e o "total" dessa listagem também é pequeno.ls -l a/b
mostraráfoo
, que é grande, e o "total" será grande. -
Como o total é a soma dos itens exibidos, as opções
ls
que alteram o que é exibido também alteram o total.mv a/b/foo a/b/.foo ls -l a/b
Como
.foo
começa com um ponto, ele não é mais incluído na lista de diretórios. Então o "total" agora é 0, para um diretório com um arquivo enorme nele! Adicione o-a
flag e.foo
aparece eo "total" se torna grande novamente. Na verdade, o "total" é maior que a contagem de blocos para.foo
, porque também inclui as contagens de blocos para.
(a/b
) e..
(a
). O-A
flag é melhor (omitem.
e..
, mas incluem todos os outros dotfiles). -
Contagens de bloco não são completamente previsíveis em tamanhos de arquivo porque sistemas de arquivos diferentes têm tamanhos de bloco diferentes (assim, um arquivo contendo 1 byte será relatado como ocupando 1 bloco em um sistema de arquivos com blocos de 1024 bytes e 4 blocos em um sistema de arquivos com blocos de 4096 bytes), e também porque a contagem inclui sobrecarga do sistema de arquivos ( blocos indiretos que são onde ele armazena a lista principal de blocos), e porque há arquivos esparsos - um grande pedaço de zeros em um arquivo pode ser (mas não sempre ser) armazenado de uma maneira eficiente que não ocupe nenhum bloco adicional.