据我了解,类 Unix 操作系统上的每个文件都有一个 inode 编号(可以使用“ls -i”查看),每个 inode 都是包含文件实际数据的磁盘块列表。
是否有一个 Linux 命令将文件名作为其参数并打印出该文件的 inode 指向的磁盘块列表?
PS 有问题的文件系统是 ext3。
据我了解,类 Unix 操作系统上的每个文件都有一个 inode 编号(可以使用“ls -i”查看),每个 inode 都是包含文件实际数据的磁盘块列表。
是否有一个 Linux 命令将文件名作为其参数并打印出该文件的 inode 指向的磁盘块列表?
PS 有问题的文件系统是 ext3。
您可以使用“debugfs”工具在命令行或交互式查看文件信息。要么使用:
或者
例如:
获取块列表的一种简单方法(无需像
debugfs
答案中那样从分区中读取)是使用FIBMAP
ioctl. 我不知道有什么命令可以做到这一点,但是写一个很简单;一个快速的谷歌搜索给了我一个 FIBMAP 使用的例子,这正是你想要的。一个优点是它可以在任何支持该bmap
操作的文件系统上工作,而不仅仅是 ext3。一个更新的(和更有效的)替代方案是
FIEMAP
ioctl,它还可以返回有关范围的详细信息(对 ext4 有用)。我不会在 zfs 上工作,但会在 ext4、btrfs、(v)fat 等上工作
man 8 hdparm
:查看“debugfs”的语法,特别是“stat”命令。这将显示文件使用的数据块列表。您可以使用“-f”参数将参数传递给“debugfs”,以便从脚本中调用它。
至少在某些 linux 机器上......“ls -s”可能会提供您正在寻找的东西。
编辑:我的错,我看到你正在寻找块本身的列表,而不是它们的计数。