du tamanho dos relatórios para um diretório 4 KBs mais que a soma total do conteúdo

2
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ ls ./control
amer  calls  q1  q2  q3  quit.c  RCS  SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ du ./control
20  ./control/calls
16  ./control/RCS
40  ./control/SCCS
96  ./control
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ du ./control/*
0   ./control/amer
20  ./control/calls
4   ./control/q1
4   ./control/q2
4   ./control/q3
4   ./control/quit.c
16  ./control/RCS
40  ./control/SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$

Por favor, note du informa que o diretório de controle ocupa 96 bytes. Agora, quando eu adiciono os bytes consumidos pelos arquivos individuais, ele chega a 92 bytes.

Da mesma forma, para todos os relatórios, o resultado mostra 4 bytes a mais do que a soma total do conteúdo.

O que este extra 4 bytes de?

EDIT#1

ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ ls -ld $_
drwxrwxr-x 5 ravbholua ravbholua 4096 Dec  8 21:39 control

du (ou linux) usa blocos de 1024 bytes (1KB) para relatar (1024 * 4 = 4096) um arquivo.

ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ ls
ame  amer  calls  q1  q2  q3  quit.c  RCS  SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ du ame
4   ame
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ cat ame
a
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ ll ame
-rw-rw-r-- 1 ravbholua ravbholua 2 Dec  8 21:39 ame

Portanto, o arquivo 'ame' acima, que contém apenas a letra 'a' e 'enter key', ocupa 4 KBs do meu espaço em disco.

Então isso significa que para um arquivo / diretório o linux está alocando 4KB do meu espaço em disco !!!! e alocará em múltiplos de 4KB.

Também adicionando mais uma coisa: ls -l reporta o tamanho em unidades de byte para um diretório, mas não para um arquivo normal. Com ref. para o arquivo acima 'ame', está claro que para um arquivo regular ls -l reporta tamanho como contagem de caracteres e não bytes.

    
por Ravi 08.12.2013 / 17:00

2 respostas

7

O diretório control em si tem tamanho 4 e está incluído no seu primeiro comando. A segunda variante não calcula o tamanho do diretório porque você não está passando para du , mas somente seu conteúdo.

Existe também a possibilidade de você ter arquivos ocultos (arquivos de pontos) excluídos ao expandir o * glob para que du não se incomode com eles.

    
por 08.12.2013 / 17:05
1

Primeiro, o número não está em bytes. A unidade é de kilobytes ou meio kilobytes, dependendo da sua implementação.

Quando você executa du ./control/* , obtém informações para os arquivos contidos no diretório control , mas não para o diretório control em si. Os diretórios têm um tamanho também - as informações sobre os arquivos que elas contêm devem ser armazenadas em algum lugar. O tamanho de control em si é de 4 unidades.

    
por 09.12.2013 / 00:39

Tags