Как перечислить все пути жестких ссылок определенного inode, не проходя по всей файловой системе в Linux?

Как перечислить все пути жестких ссылок определенного inode, не проходя по всей файловой системе в Linux?

Я хотел бы узнать все пути, которые имеют одинаковый номер inode, я нашелls — Список всех файлов с одинаковым номером inode? - Unix & Linux Stack ExchangeОднако ответ предполагает обход всей файловой системы, содержащей inode, с помощью findутилиты, что нецелесообразно для файловых систем с большим количеством файлов.

Поскольку информация о жесткой ссылке должна храниться в определенной структуре данных файловой системы, возможно ли извлечь такую ​​информацию напрямую с помощью утилиты, специфичной для файловой системы?

решение1

Это было бы возможно только в том случае, если бы сам inode содержал местоположение каждого связанного объекта. Это непрактично, поскольку требует нескольких дополнительных обновлений (и шагов проверки) самого inode в случае, если один из файлов перемещается в структуре каталогов. Наличие фактических путей к файлам в inode означало бы гораздо больше накладных расходов в inode, поскольку ему пришлось бы динамически изменять свой размер, чтобы компенсировать изменения путей или переименования, а размер inode мог бы сильно варьироваться.

Вместо этого inode содержит только количество ссылок, а не куда или откуда. Это количество ссылок может быть одним 32-битным полем и не приводит к изменению размера inode, его можно обновить «на месте», а не загружать, изменять и затем снова сохранять весь элемент в другом месте.

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

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

Связанный контент