So wie ich es verstehe, hat jede Datei auf einem Unix-ähnlichen Betriebssystem eine Inode-Nummer (die mit "ls -i" angezeigt werden kann), und jeder Inode ist eine Liste von Plattenblöcken, die die tatsächlichen Daten einer Datei enthalten.
Gibt es einen Linux-Befehl, der einen Dateinamen als Argument verwendet und die Liste der Plattenblöcke ausgibt, auf die der Inode dieser Datei verweist?
PS Das fragliche Dateisystem ist ext3.
linux
unix
filesystems
ext3
Mike
quelle
quelle
File not found by ext2_lookup
. Daher ist es besser, die Inode-Notation für das Argument von stat zu verwenden. Verwenden Siels -i
diese Option, um die Inode-Nummer einer Datei abzurufen, und rufen Sie dann debugfs mit dieser Nummer in '<>' anstelle von / path / to / file auf. Zum Beispiel:# debugfs -R "stat <1234567>" /dev/sda2
path/to/file
nicht in allen Fällen arbeiten? Was mich verwirrt ist, dassdebugfs ..... /dev/fs_blockdev
nach meinem Verständnis immer nur ein Dateisystem in Betracht gezogen wird und auf alle diese Dateien innerhalb dieses Systems entweder über ihren Pfad oder über eine Inode zugegriffen werden kann. Was wollten Sie ausdrücken?debugfs -R "stat /home/myuser/foo.txt" /dev/sda5
ein Fehler auf. Aber das Aufrufendebugfs -R "stat /path/on/rootfs" /dev/sda3
funktioniert.sudo
, sonst wird eine nicht hilfreiche Nachricht angezeigt.Sehen Sie sich die Syntax für "debugfs" und insbesondere den Befehl "stat" an. Daraufhin wird eine Liste der von einer Datei verwendeten Datenblöcke angezeigt. Sie können Parameter mit dem Argument "-f" an "debugfs" übergeben, um sie von einem Skript aus aufzurufen.
quelle
Eine einfache Möglichkeit, die Liste der Blöcke abzurufen (ohne wie in den
debugfs
Antworten aus der Partition lesen zu müssen ), ist die Verwendung vonFIBMAP
ioctl. Ich kenne keinen Befehl dazu, aber es ist sehr einfach, einen zu schreiben. Eine schnelle Google-Suche gab mir ein Beispiel für die Verwendung von FIBMAP , das genau das macht, was Sie wollen. Ein Vorteil ist, dass es auf jedem Dateisystembmap
funktioniert, das die Operation unterstützt , nicht nur auf ext3.Eine neuere (und effizientere) Alternative ist das
FIEMAP
ioctl, das auch detaillierte Informationen zu Extents zurückgeben kann (nützlich für ext4).quelle
Ich werde nicht an zfs arbeiten, sondern an ext4, btrfs, (v) fat usw
man 8 hdparm
:quelle
Zumindest auf einigen Linux-Rechnern ... könnte "ls -s" das liefern, wonach Sie suchen.
Edit: meine schlechte, ich sehe, dass Sie eine Liste der Blöcke selbst suchen, nicht eine Anzahl von ihnen.
quelle
e2fsck -b 32768 / dev / hda1 Ich glaube, Sie können dies ausprobieren oder wenn Sie mehr docx auf dem gleichen suchen, können Sie Folgendes überprüfen
http://www.linux-tutorial.info/modules.php?name=MContent&pageid=97
quelle