Jak rozumiem, każdy plik w systemie operacyjnym uniksowym ma numer i-węzła (który można wyświetlić za pomocą „ls -i”), a każdy i-węzeł jest listą bloków dyskowych zawierających rzeczywiste dane pliku.
Czy istnieje polecenie systemu Linux, które bierze nazwę pliku za argument i wypisuje listę bloków dysku, na które wskazuje i-węzeł tego pliku?
PS Wspomniany system plików to ext3.
linux
unix
filesystems
ext3
mikrofon
źródło
źródło
File not found by ext2_lookup
. Dlatego lepiej użyć notacji i-węzłowej jako argumentu stat. Użyj,ls -i
aby uzyskać numer i-węzła pliku, a następnie wywołać debugfs z tym numerem w „<>” zamiast / path / to / file. Na przykład:# debugfs -R "stat <1234567>" /dev/sda2
path/to/file
nie powinien działać we wszystkich przypadkach? Mylące jest dla mnie to, że poprzezdebugfs ..... /dev/fs_blockdev
moje rozumienie rozważany jest tylko jeden system plików, a do wszystkich plików w tym systemie można uzyskać dostęp przez ich ścieżkę lub przez i-węzeł, co chciałeś wyrazić?debugfs -R "stat /home/myuser/foo.txt" /dev/sda5
oznacza to błąd. Ale wywoływaniedebugfs -R "stat /path/on/rootfs" /dev/sda3
działa.sudo
, w przeciwnym razie zostanie wyświetlona nieprzydatna wiadomość.Spójrz na składnię „debugfs”, a zwłaszcza na polecenie „stat”. Spowoduje to wyświetlenie listy bloków danych używanych przez plik. Możesz przekazać parametry do „debugfs” za pomocą argumentu „-f”, aby wywołać go ze skryptu.
źródło
Prostym sposobem na uzyskanie listy bloków (bez konieczności czytania z partycji jak w
debugfs
odpowiedziach) jest użycieFIBMAP
ioctl. Nie znam żadnego polecenia, ale napisanie jednego jest bardzo proste; szybkie wyszukiwanie w Google dało mi przykład użycia FIBMAP , który robi dokładnie to, co chcesz. Zaletą jest to, że będzie działać na każdym systemie plików, który obsługuje tębmap
operację, a nie tylko na ext3.Nowszą (i bardziej wydajną) alternatywą jest
FIEMAP
ioctl, który może również zwracać szczegółowe informacje o zakresach (przydatne dla ext4).źródło
Nie będę działał na ZFS, ale na ext4, btrfs, (v) fat itp
man 8 hdparm
:źródło
Przynajmniej na niektórych komputerach z linuksem ... „ls -s” może dostarczyć to, czego szukasz.
Edycja: mój zły, widzę, że szukasz listy samych bloków, a nie ich liczby.
źródło
e2fsck -b 32768 / dev / hda1 czuję, że możesz to wypróbować lub jeśli szukasz więcej docx na tym samym, możesz sprawdzić następujące
http://www.linux-tutorial.info/modules.php?name=MContent&pageid=97
źródło