如何使用特定的inode编号在ext3文件系统 中创建文件? (例如:我想创建一个inode-number = 12253的文件)如何使用特定的inode编号创建文件?
回答
inode号由系统分配。用户代码在创建文件时无法指定它。
这是一个非常低的数字,所以它有可能已经在使用;如果没有,你可以运行一个Bash脚本来创建几千个文件:类似for i in $(seq 1 12000); do touch $i.txt; done
。然后找到你想要的:find/-inum 12253
,并将其重命名为任何你想要的,并把它放在你想要的。如果您不覆盖分配的空间,在这种情况下,最有可能创建新的inode,应该这样做。不过,这是一个sl solution的解决方案,而且必须有更好的方法。
我不认为从用户空间创建文件时,有任何编程方式可以请求特定的inode编号。除了在stat()
结果中可见外,inode编号在用户空间中没有意义;它们是文件系统内部簿记数据的一部分,就像分配文件内容的块号一样。
您可能可以使用debugfs
“更改”现有文件的inode编号,方法是将一个inode的内容复制到另一个inode,然后更新任何目录条目以指向新的inode并释放旧的inode。因此,您可以使用任何inode编号创建文件,然后将其“更改”为所需的文件。但是,这必须非常谨慎,因为错误很可能导致文件系统损坏和数据丢失。您还必须考虑到所需inode号码已被另一个文件使用的可能性。
我用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
我希望你确保inode 5在清除之前没有包含其他重要文件... – Wyzard 2013-10-01 01:55:48
Inode 5是[保留](http://www.nongnu.org/ext2-doc) /ext2.html#RESERVED-INODES-VALUES),也称为“EXT2_BOOT_LOADER_INO”。另外,我在一个受控环境(非关键SD卡)中做了这个。 – 2013-10-01 10:19:38
- 1. 用inode编号重命名文件[UNIX]
- 2. 如何创建64位inode?
- 3. 通过MINIX上的文件名检索文件的inode编号
- 4. 如何用inode调用文件?
- 5. 如何使用批处理文件在特定目的地创建文件夹
- 6. 如何使用SQL创建事件的内部编号
- 7. 如何在特定文件夹上创建空的csv文件?
- 8. 使用C代码找到一个文件的inode号码
- 9. 如何创建味道特定的Android林特基线文件
- 10. 以编程方式在特定文件夹中创建文件
- 11. 如何用特定大小的Java创建文件(不稀疏)
- 12. 如何在使用Jquery创建条件时定位特定行
- 13. 使用文本文件的特定部分创建值
- 14. 使用特定编号编辑数据
- 15. 如何安全地创建基于会话编号的文件
- 16. Realbasic:如何在特定文件夹中创建文件?
- 17. 打印C中的Inode编号
- 18. 在C中创建编号文件
- 19. 如何创建特定大小的文本文件C++
- 20. 16b汇编 - 使用自定义文件名创建文件
- 21. 创建特定大小的新文件
- 22. 创建特定的WAR文件
- 23. 创建特定大小的文件
- 24. 使用批量增量编号创建新文件
- 25. 如何创建用户特定的SharedPreference?
- 26. 使用shell.application创建特殊文件夹
- 27. 如何使用创建文件创建tmp文件名
- 28. 如何以编程方式在SD卡上创建特定大小的文件
- 29. 目录Inode vs普通文件Inode
- 30. 如何使用AppleScript创建和编写UTF-16文本文件?
+1有趣的问题! – 2011-04-22 06:34:27
如果该inode号码被采取了怎么办? – bart 2011-04-22 12:12:13