GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie liste ich die Datenblöcke einer Datei unter Linux auf?

Lösung 1:

Sie können das "debugfs"-Tool verwenden, um Dateiinformationen auf der Befehlszeile oder interaktiv anzuzeigen. Verwenden Sie entweder:

# debugfs /dev/<spartition>
# stat /path/to/file

oder

# debugfs -R "stat /path/to/file" /dev/<partition>

zum Beispiel:

# debugfs -R "stat /etc/passwd"  /dev/sda5
Inode: 435914   Type: regular    Mode:  0644   Flags: 0x0
Generation: 979004472    Version: 0x00000000
User:     0   Group:     0   Size: 1577
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x4a2d6f78 -- Mon Jun  8 23:07:20 2009
atime: 0x4a2d6f79 -- Mon Jun  8 23:07:21 2009
mtime: 0x4a2d6f78 -- Mon Jun  8 23:07:20 2009
Size of extra inode fields: 4
BLOCKS:
(0):1767438
TOTAL: 1

Lösung 2:

Sehen Sie sich die Syntax für „debugfs“ und insbesondere den Befehl „stat“ an. Das zeigt Ihnen eine Liste der Datenblöcke, die von einer Datei verwendet werden. Sie können Parameter mit dem Argument "-f" an "debugfs" übergeben, um es von einem Skript aus aufzurufen.

Lösung 3:

Eine einfache Möglichkeit, die Liste der Blöcke zu erhalten (ohne aus der Partition lesen zu müssen, wie in debugfs Antworten) ist die FIBMAP zu verwenden ioctl. Ich kenne keinen Befehl dafür, 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 tut, was Sie wollen. Ein Vorteil ist, dass es auf jedem Dateisystem funktioniert, das den bmap unterstützt Betrieb, nicht nur ext3.

Eine neuere (und effizientere) Alternative ist FIEMAP ioctl, das auch detaillierte Informationen über Extents zurückgeben kann (nützlich für ext4).

Lösung 4:

hdparm --fibmap /path/to/filename

Ich werde nicht mit zfs arbeiten, aber mit ext4, btrfs, (v)fat usw.

man 8 hdparm :

--fibmap Bei Verwendung muss dies das einzige angegebene Flag sein. Es erfordert einen Dateipfad als Parameter und gibt eine Liste der Gerätebereiche (Sektorbereiche) aus, die von dieser Datei auf der Festplatte belegt sind. Sektornummern werden als absolute LBA-Nummern angegeben, die von Sektor 0 des physischen Geräts referenziert werden (nicht die Partition oder das Dateisystem). Diese Informationen können dann für eine Vielzahl von Zwecken verwendet werden, z. B. zum Untersuchen des Fragmentierungsgrads größerer Dateien oder zum Bestimmen geeigneter Sektoren, die während Fehlerinjektionstestverfahren absichtlich beschädigt werden sollen.


Linux
  1. So kopieren Sie Dateiberechtigungen und Eigentumsrechte in eine andere Datei in Linux

  2. So verwalten Sie Linux-Dateifunktionen

  3. So finden Sie eine Datei in Linux

  4. Wie benenne ich eine Datei unter Linux um?

  5. Wie kann ich Daten an einer seriellen Schnittstelle in Linux überwachen?

So überprüfen Sie die Prüfsumme unter Linux

So benennen Sie eine Datei (en) in Linux um

So listen Sie installierte Pakete in Linux auf

So zeigen Sie Daten aus einer Textdatei in Linux an

So schreiben Sie Daten in eine Datei unter Linux

So verknüpfen Sie eine Datei unter Linux per Symlink