LINUX.ORG.RU

правильно посчитать размер

 ,


0

2

считаю размер файлов в tmpfs, если это важно

если я дёргаю st_size, он показывает фактический размер содержимого самого файла. если f_info.st_blocks * f_info.st_blksize, то показывает больше чем есть

вот выхлоп питона:

>>> f_info = os.stat(filename)
>>> f_info.st_size
153
>>> f_info.st_blocks
8
>>> f_info.st_blksize
4096
>>> f_info.st_blocks * f_info.st_blksize
32768

вот выхлоп du и stat:

$ du -h ${FILENAME}
4.0K    ${FILENAME}
$ du -b ${FILENAME}
153     ${FILENAME}
$ stat ${FILENAME}
  File: `${FILENAME}'
  Size: 153             Blocks: 8          IO Block: 4096   regular file
Device: 19h/25d Inode: 921117616   Links: 1
...
Access: 2015-10-03 14:15:03.583348337 +0300
Modify: 2015-10-03 14:15:04.416681664 +0300
Change: 2015-10-03 14:15:04.416681664 +0300
 Birth: -

как правильно сосчитать размер файла? в исходники du лезть не хочу - плохо знаю сишечку


Один «блок» не 4096, а 512 байт. Поэтому размер файла на диске — 8*512 = 4096 байт.

anonymous
()
Ответ на: комментарий от tyan

Исторически сложилось. Просто еще одна единица измерения наряду с MB и т.д. К размеру кластера никакого отношения не имеет.

anonymous
()
Ответ на: комментарий от tyan

Кстати да, не очевидный момент. Зачем, казалось бы, сообщать о 4096 байтах на блок, когда по факту там 512.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.