如何创建具有特定inode编号的文件?

时间:2011-04-22 06:23:38

标签: ext3

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

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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