2011-04-22 23 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