2011-04-22 24 views
10

如何使用特定的inode编号在ext3文件系统 中创建文件? (例如:我想创建一个inode-number = 12253的文件)如何使用特定的inode编号创建文件?

+0

+1有趣的问题! – 2011-04-22 06:34:27

+1

如果该inode号码被采取了怎么办? – bart 2011-04-22 12:12:13

回答

0

inode号由系统分配。用户代码在创建文件时无法指定它。

0

这是一个非常低的数字,所以它有可能已经在使用;如果没有,你可以运行一个Bash脚本来创建几千个文件:类似for i in $(seq 1 12000); do touch $i.txt; done。然后找到你想要的:find/-inum 12253,并将其重命名为任何你想要的,并把它放在你想要的。如果您不覆盖分配的空间,在这种情况下,最有可能创建新的inode,应该这样做。不过,这是一个sl solution的解决方案,而且必须有更好的方法。

8

我不认为从用户空间创建文件时,有任何编程方式可以请求特定的inode编号。除了在stat()结果中可见外,inode编号在用户空间中没有意义;它们是文件系统内部簿记数据的一部分,就像分配文件内容的块号一样。

您可能可以使用debugfs“更改”现有文件的inode编号,方法是将一个inode的内容复制到另一个inode,然后更新任何目录条目以指向新的inode并释放旧的inode。因此,您可以使用任何inode编号创建文件,然后将其“更改”为所需的文件。但是,这必须非常谨慎,因为错误很可能导致文件系统损坏和数据丢失。您还必须考虑到所需inode号码已被另一个文件使用的可能性。

+1

我用inode 5创建了一个文件(引导文件):0)卸载卷1)用'debugfs'打开卷,指定'-w'将其打开为可写2)'clri <5>'3)' seti <5>'4)'sif <5>模式0x81FF' 5)'ln <5> BootFile' 6)'sif <5> links_count 1'('ln'不改变这个字段)7)关闭'debugfs' 8)挂载音量9)编辑'BootFile' :) – 2013-09-29 22:58:57

+0

我希望你确保inode 5在清除之前没有包含其他重要文件... – Wyzard 2013-10-01 01:55:48

+0

Inode 5是[保留](http://www.nongnu.org/ext2-doc) /ext2.html#RESERVED-INODES-VALUES),也称为“EXT2_BOOT_LOADER_INO”。另外,我在一个受控环境(非关键SD卡)中做了这个。 – 2013-10-01 10:19:38