Как мне создать файл с определенным номером инода? - PullRequest
13 голосов
/ 22 апреля 2011

Как я могу создать файл в файловой системе ext3 с конкретным номером инода? (например: я хочу создать файл с номером inode = 12253)

Ответы [ 3 ]

9 голосов
/ 22 апреля 2011

Я не думаю, что есть какой-либо программный способ запросить определенный номер инода при создании файла из пространства пользователя.Кроме видимых в stat() результатах, номера инодов не имеют значения в пространстве пользователя;они являются частью внутренних данных бухгалтерии файловой системы, так же как и номера блоков, в которых размещается содержимое файла.

Вы, вероятно, могли бы использовать debugfs, чтобы «изменить» номер индекса существующего файла, скопировав содержимоеодного индекса к другому, затем обновляя любые записи каталога, чтобы они указывали на новый индекс, и освобождая старый.Таким образом, вы можете создать свой файл с любым номером инода, а затем «изменить» его на нужный.Это должно быть сделано с особой осторожностью, поскольку ошибки могут привести к повреждению файловой системы и потере данных.Вам также придется учитывать возможность того, что желаемый номер вашего inode уже используется другим файлом.

2 голосов
/ 22 апреля 2011

Это довольно низкое число, так что скорее всего, оно уже используется;если нет, вы можете запустить скрипт Bash для создания нескольких тысяч файлов: что-то вроде for i in $(seq 1 12000); do touch $i.txt; done.Затем найдите тот, который вы хотите: find / -inum 12253, и переименуйте его в то, что вы хотите, и вставьте в него, что вы хотите.Если вы не перезаписываете выделенное пространство, в этом случае, скорее всего, будет создан новый индекс, который должен это сделать.Однако это небрежное решение, и должен быть лучший способ.

1 голос
/ 22 апреля 2011

Номер индекса присваивается системой. Код пользователя не может указать его при создании файла.

...