Как мне создать файл с определенным номером инода?
Как я могу создать файл в файловой системе ext3 с определенным номером inode? (например: я хочу создать файл с номером inode = 12253)
3 ответа
Я не думаю, что есть какой-либо программный способ запрашивать конкретный номер инода при создании файла из пространства пользователя. Кроме того, чтобы быть видимым в stat()
результаты, номера инодов не имеют значения в пространстве пользователя; они являются частью внутренних данных бухгалтерии файловой системы, так же как и номера блоков, в которых размещается содержимое файла.
Вы могли бы, вероятно, использовать debugfs
"изменить" номер инода существующего файла, скопировав содержимое одного инода в другой, затем обновив любые записи каталога, чтобы они указывали на новый инод, и освободив старый. Таким образом, вы можете создать свой файл с любым номером инода, а затем "изменить" его на нужный. Это должно быть сделано с особой осторожностью, поскольку ошибки могут привести к повреждению файловой системы и потере данных. Вам также придется учитывать возможность того, что желаемый номер вашего inode уже используется другим файлом.
Это довольно низкое число, так что скорее всего, оно уже используется; если нет, вы можете запустить скрипт Bash для создания нескольких тысяч файлов: что-то вроде for i in $(seq 1 12000); do touch $i.txt; done
, Затем найдите тот, который вы хотите: find / -inum 12253
и переименуйте его в то, что вы хотите, и вставьте в него, что вы хотите. Если вы не перезаписываете выделенное пространство, в этом случае, скорее всего, будет создан новый индекс, который должен это сделать. Это небрежное решение, и должен быть лучший способ.
Номер индекса присваивается системой. Код пользователя не может указать его при создании файла.