1

Я создал каталог, в который поместил десять файлов, каждый из которых содержал ровно 1048 576 символов (1024 ^ 2). Размер каждого из них должен быть ровно один мегабайт, считая мегабайт как 1024 ^ 2 байта.

Если я использую ls -lh в этом каталоге, это вывод

[ 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

Почему это составляет до 11 миллионов, если сумма столбца составляет ровно 10 миллионов? Если я сделаю ls -lha, то увижу, что каталоги . и .. приходится по 4 КБ каждый. В этом каталоге НИЧЕГО больше нет.

Почему это так?

Это было сделано в коробке Linux.

1 ответ1

1

Это потому, что есть две дополнительные записи 4K (. И ..), небольшие накладные расходы 4K на каждый файл (это блок метаданных), а ls всегда округляет размеры.

Попробуйте ls -lash (он покажет размер файла 'disk', то есть с любыми дополнительными не пользовательскими данными, хранящимися на диске):

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

Если вы запросите размер в килобайтах с помощью ls -las , вы получите:

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

Кроме того, если вы уменьшите размер последнего файла на 48 КБ (накладные расходы), вы получите каталог размером 10 МБ (т. Е. 10240 КБ):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .