Tamanho total da pasta com ls -lh

1

Eu criei um diretório onde coloquei dez arquivos, cada um com exatamente 1.048.576 caracteres (1024 ^ 2). O tamanho de cada um deles deve ser exatamente um megabyte, contando megabyte como 1024 ^ 2 bytes.

Se eu usar ls -lh nesse diretório, esta é a saída

[ me: /home/me/test ] ls -lh the_directory
total 11M
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f0
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f1
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f2
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f3
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f4
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f5
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f6
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f7
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f8
-rw-r--r--  1 me we 1.0M Feb  1 17:11 f9

Por que soma 11M se a soma da coluna for exatamente 10.0M? Se eu ls -lha, vejo que os diretórios . e .. são responsáveis por 4KB cada. Não há mais nada neste diretório.

Por que isso acontece?

Isso foi feito em uma caixa do Linux.

    
por Escualo 02.02.2010 / 02:34

1 resposta

1

É porque há duas entradas de 4K adicionais ( . e .. ), uma pequena sobrecarga de 4K em cada arquivo (é o bloco de metadados) e ls sempre arredonda o tamanho.

Teste ls -lash (mostrará o tamanho de 'disco' dos arquivos, ou seja, com qualquer dado não-usuário adicional armazenado no disco):

total 11M
4.0K drwxr-xr-x  2 whitequark whitequark 4.0K 2010-02-02 06:15 .
4.0K drwxr-xr-x 85 whitequark whitequark 4.0K 2010-02-02 05:33 ..
1.1M -rw-r--r--  1 whitequark whitequark 1.0M 2010-02-02 06:15 f0
...
1.1M -rw-r--r--  1 whitequark whitequark 976K 2010-02-02 06:20 f9

Se você solicitar o tamanho em quilobytes com ls -las , receberá:

total 10288
   4 drwxr-xr-x  2 whitequark whitequark    4096 2010-02-02 06:15 .
   4 drwxr-xr-x 85 whitequark whitequark    4096 2010-02-02 05:33 ..
1028 -rw-r--r--  1 whitequark whitequark 1048576 2010-02-02 06:15 f0
...
1028 -rw-r--r--  1 whitequark whitequark 1048576 2010-02-02 06:18 f9

Além disso, se você reduzir o tamanho do último arquivo em 48 K (a sobrecarga), você obterá um diretório de 10 milhões (ou seja, 10240 K):

total 10M
4.0K drwxr-xr-x  2 whitequark whitequark 4.0K 2010-02-02 06:15 .
4.0K drwxr-xr-x 85 whitequark whitequark 4.0K 2010-02-02 05:33 ..
1.1M -rw-r--r--  1 whitequark whitequark 1.0M 2010-02-02 06:15 f0
...
1.1M -rw-r--r--  1 whitequark whitequark 1.0M 2010-02-02 06:15 f8
980K -rw-r--r--  1 whitequark whitequark 976K 2010-02-02 06:20 f9
    
por 02.02.2010 / 04:16