Как повлиять на номер inode, например, при восстановлении файловой системы?

, чтобы перейти к линии 3 на File1.txt и Line 4 на File2.txt Я делаю это:

vim -c ":e file1.txt|:3|:e file2.txt|:4"
-1
15.10.2015, 02:06
3 ответа

Since 35 years, this option no longer exist. Any decent fs will not give you control over inode numbers.

What you can do is to parse the restoresymtsble from ufsrestore, but it is undocumented and binary.

Star uses the same basic algorithm to track renames and puts the database into star-symtable. This file is a textfile and there is the program star_sym that converts it into a human readable form.

So the best you can get is a translation table from old to new inode numbers.

2
28.01.2020, 05:09

В отношении ext4 инструмент debugfs может быть использован таким образом
(следует принять соответствующие меры предосторожности, поскольку debugfs может повредить вашу фс)

Цель - создать файл в inode 77 с именем /lucky77. Мы предполагаем, что inode 77 пока не используется/свободен/доступен, как и имя файла /lucky77. Далее мы работаем в автономном режиме, на немонтированном фс.

debugfs -w /dev/ext4fsblockdev
debugfs 1.42 (29-Nov-2011)
debugfs:  seti <77>
debugfs:  sif <77> mode 0x81B6
debugfs:  ln <77> luck77
debugfs:  sif <77> links_count 1
debugfs:  quit

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

0
28.01.2020, 05:09

AFAIK, нет способа скопировать индексный дескриптор в другой дескриптор без копирования данных файла.

Также нет API для запроса нового файла с определенным номером inode.

Все, что вы можете сделать, это cp -a old new && rm old , чтобы получить новый индексный дескриптор для файла, но вы не можете выбрать, каким он будет. И, конечно, это копирует все данные, поэтому это медленно.


Специальные инструменты дампа / восстановления для некоторых файловых систем могут сохранять номера inode, но большинство - нет.Такие инструменты читают / записывают блочное устройство напрямую, а не через API файловой системы. XFS: xfsdump / xfsrestore (иногда) не сохраняют номера inode . (Примечание dumpe2fs только печатает информацию; команда Linux ext2 dump была просто вызвана dump . IDK сохраняет ли она номера inode.)


Сохранение / управление номерами inode не является обычно полезным вещь которую нужно сделать. Нет системного вызова для открытия файла с помощью inum или даже для поиска имен файлов, которые относятся к заданному inum (кроме обхода всего дерева). (Инструменты отладки FS, такие как xfs_db , конечно, могут получить доступ к файлу с помощью inum, прочитав блочное устройство.)

Есть несколько случаев, когда номера inode используются вне файловой системы, которая им напрямую владеет: NFS использует номера inode в качестве файловых дескрипторов между клиентом и сервером. XFS data-migration использует их для сопоставления данных, перенесенных на ленту, с файлами на FS. Видимо, поэтому вас может заинтересовать xfsdump / xfsrestore , сохраняющий номера inode.

0
28.01.2020, 05:09

Теги

Похожие вопросы