Насколько я понимаю, каждый файл в Unix-подобной операционной системе имеет номер инода (который можно просмотреть с помощью «ls -i»), а каждый инод - это список блоков диска, которые содержат фактические данные файла.
Существует ли команда Linux, которая принимает имя файла в качестве аргумента и распечатывает список блоков диска, на которые указывает индекс этого файла?
PS Рассматриваемая файловая система - ext3.
linux
unix
filesystems
ext3
Майк
источник
источник
File not found by ext2_lookup
. Таким образом, лучше использовать обозначение inode для аргумента stat. Используйтеls -i
для получения номера индекса файла, затем вызывайте debugfs с этим номером в «<>» вместо / path / to / file. Например:# debugfs -R "stat <1234567>" /dev/sda2
path/to/file
не должно работать во всех случаях? Что меня смущает, так это то,debugfs ..... /dev/fs_blockdev
что в моем понимании только одна когда-либо рассматриваемая файловая система, и ко всем этим файлам в этой системе можно получить доступ либо по их пути, либо через их инод, что вы хотели выразить?debugfs -R "stat /home/myuser/foo.txt" /dev/sda5
приводит к ошибке. Но вызываяdebugfs -R "stat /path/on/rootfs" /dev/sda3
работает.sudo
, в противном случае будет отображаться какое-то бесполезное сообщение.Посмотрите на синтаксис для "debugfs" и, в частности, на команду "stat". Это покажет вам список блоков данных, используемых файлом. Вы можете передать параметры в «debugfs» с аргументом «-f», чтобы вызвать его из скрипта.
источник
Простой способ получить список блоков (без чтения из раздела, как в
debugfs
ответах) - использоватьFIBMAP
ioctl. Я не знаю ни одной команды для этого, но написать ее очень просто; быстрый поиск в Google дал мне пример использования FIBMAP , которое делает именно то, что вы хотите. Одним из преимуществ является то, что он будет работать на любой файловой системе, которая поддерживаетbmap
операцию, а не только на ext3.Более новой (и более эффективной) альтернативой является
FIEMAP
ioctl, который также может возвращать подробную информацию о экстентах (полезно для ext4).источник
Я не буду работать на zfs, но буду работать на ext4, btrfs, (v) fat и т. Д.
man 8 hdparm
:источник
По крайней мере, на некоторых машинах Linux ... "ls -s" может предоставить то, что вы ищете.
Изменить: мой плохой, я вижу, что вы ищете список самих блоков, а не их количество.
источник
e2fsck -b 32768 / dev / hda1 Я чувствую, что вы можете попробовать это или, если вы ищете больше docx на том же, вы можете проверить следующее
http://www.linux-tutorial.info/modules.php?name=MContent&pageid=97
источник