LinuxForum.Fans
Тема

Почему ls и du показывают разные значения

Автор: lone_wolf 6 сообщений 1038 просмотров
18.11.2017 23:38 #426563

Немного офтопный вопрос.
Но с какой радости ls и du показывают разные значения. Если я правильно понимаю то ls как и df ображается к файловой системе, в то время как du сама идет и опрашивает каждый файл. Я правильно понимаю? *SCRATCH*

19.11.2017 00:59 #426570

"lone_wolf" написал:
с какой радости ls и du
ls - размер файла


du - пространство занимаемое файлом

"lone_wolf" написал:
du сама  идет и опрашивает каждый файл
Если бы это было так, то при выполнении du было бы полное перечитывание файла с диска, думаю ты бы это по треску от харда заметил :D

Эта информация хранится в метаданных ФС, там же где и имена файлав
19.11.2017 01:17 #426571

Если попытаться это изобразить в упрощенном виде:
[console]Обычный файл: 0xAA 0xBB 0x00 0xCC 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF
01 02 03 04 05 06 07 08 09 10 11 12 13
Sparsed: 0xAA 0xBB 0x00 0xCC 0xFF ⁸*0x00@05
01 02 03 04 13 05-12[/console]
Здесь разница физической длинны файла заметна невооруженным глазом, хотя логически файл не изменился.

19.11.2017 01:24 #426572
DiabloPC написал:
Если попытаться это изобразить в упрощенном виде:

Хорошо, это понятно, но откуда ls берет размер? du берет данные из метаданных если я правильно опять же понимаю.

19.11.2017 01:42 #426573

[console]Если это представить по другому:
ls отображает к-во байт ЛОГИЧЕСКИ описаных в файле
1 +1 +1 +1 +1 +8 = 13

¹0xAA ¹0xBB ¹0x00 ¹0xCC ¹0xFF ⁸*0x00@05
---- ---- ---- ---- ----
1 + 1 + 1 + 1 + 1 = 5
du отображает к-во байт ФИЗИЧЕСКИ записаных на диск
[/console]

Все это хранится в метаданых =)
И вот это: "⁸*0x00@05" - тоже в метаданных


Кста, вотЬ (по поводу метаданных) http://wm-help.net/lib/b/book/173895509/136
И еще вот так: http://mf.grsu.by/UchProc/livak/b_lecture/lec33_SYF.htm

Войдите или зарегистрируйтесь, чтобы ответить.