Bif*_*iff 3 linux filesystems files
在 Unix 文件系统中,目录只是具有特殊目录结构的特殊文件,其中包含子文件名、文件名大小和 inode 引用号。
超出此范围的实际文件元数据通常存储在 inode 本身中。
我的问题是。如何以原始形式而不是解释形式读取实际的特殊目录结构。
是的,我知道您可以使用 ls 查看那里的文件。那不是我要找的。
简单的答案是您想要做的是读取目录文件,使用类似cat ., cat /etc, 或的命令cat mydir。当然,由于这是“原始”数据,您需要使用更适合以人性化方式显示非 ASCII 数据的程序;例如,hexdump或od。
不幸的是,正如目录何时停止作为文件可读?,过去二十年左右发布的大多数Unix版本都不允许这样做。所以你的问题的答案可能是“找到一个仍然允许读取目录的 Unix 版本”。AIX、大多数版本的 BSD 以及除最新版本的 Solaris 之外的所有版本都可能符合条件。寻找允许它的 Linux 可能需要使用时间机器。
小智 5
我知道这是一个老问题,但我正在寻找有关目录结构的信息并发现了这个。
要获取目录文件中的原始数据,您可以使用debugfs. 例如:
sudo debugfs /dev/sda1
Run Code Online (Sandbox Code Playgroud)
您可以照常使用ls、cd、 等,或者cat目录。这不是很可读,所以你可以使用:
dump / dumproot
Run Code Online (Sandbox Code Playgroud)
dumproot这将在您调用的位置创建一个名为debugfs. 要获取它的原始内容,您可以使用xxd. 例如:
xxd dumproot | head -n2
00000000: 0200 0000 0c00 0102 2e00 0000 0200 0000 ................
00000010: 0c00 0202 2e2e 0000 0b00 0000 1400 0a02 ................
Run Code Online (Sandbox Code Playgroud)
这显示了我的目录的.和条目,它们的索引节点号都是 2,即开头的 02000000。对于较大的索引节点编号,您可以在小尾数法的条目开头看到它们。
是十六进制 2e,所以在那里也可见。我不太确定“0c00 0102”代表什么,或者如何指定条目的结尾。当我发现这个线程时,这就是我正在寻找的东西。../.
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |