Intereting Posts
X и xdotool в LXC вместо KVM выборочный stdout, stderr и ведение журнала с помощью команды script Какую платформу можно использовать для программного редактирования текстовых файлов? Правильная настройка операционной системы на зашифрованном диске LUKS с алгоритмом non-aes для дистрибутива на основе yum (CentOS) Регистрация при превышении лимита Контрольная сумма файла образа жесткого диска не совпадает с контрольной суммой устройства Возможно ли иметь вредоносное ПО в Linux без выполнения ненадежных приложений? Интерфейс pf out? Как выбрать имя каталога во время распаковки контрольная сумма поврежденного файла Конфигурационные файлы обычно чувствительны к конечным пробелам Копировать / домой без root Включите параллельный порт и используйте его для последовательной связи (RS-232) Как защитить системы Linux от удаленной атаки BlueBorne? Упрощенная навигация в терминале

Могут ли два файла в двух отдельных файловых системах использовать один и тот же номер инода?

Если я запускаю такую ​​команду:

find / -inum 12582925 

Есть ли вероятность, что в этом списке будут перечислены два файла в отдельных смонтированных файловых системах (из отдельных разделов), которым назначен один и тот же номер? Является ли номер индекса уникальным для одной файловой системы или для всех смонтированных файловых систем?

Номер инода уникален только в одной файловой системе. Одним из примеров, с которым вы быстро столкнетесь, является корневой индекс в файловых системах ext2 / 3/4, который равен 2:

 $ ls -id / /home 2 / 2 /home 

Если вы запускаете (при условии, что GNU find )

 find / -printf "%i %p\n" | sort -n | less 

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

Когда вы ищете файл по номеру inode, вы можете использовать опцию find-xdev чтобы ограничить его поиск файловой системой, содержащей начальный путь, если у вас есть единственный начальный путь:

 find / -xdev -inum 12582925 

только найдет файлы с индексом 12582925 в корневой файловой системе. ( -xdev также работает с несколькими путями запуска, но в этом конкретном случае его полезность уменьшается.)

Это комбинация номера st_dev и номера устройства ( st_dev и st_ino в структуре stat , %D %i в GNU find ‘s -printf ), который уникально идентифицирует файл (в данной системе). Если две записи каталога имеют одинаковые inode и dev, они ссылаются на один и тот же файл (хотя, возможно, через два разных монтирования одной и той же файловой системы для монтирования bind).

Некоторые реализации find также имеют предикат -samefile который будет находить файлы с тем же устройством и номером инода. В большинстве реализаций [ / test также есть оператор -ef для проверки того, что пути двух файлов ссылаются на один и тот же файл (хотя после разрешения символической ссылки).

Да, тот же номер инода может появиться в другой файловой системе. Если вы хотите указать точное, вам нужен не только номер инода (st_ino), но и устройство, на котором находится инод (st_dev, сам сформированный из dev_major – общий class устройства – и dev_minor – конкретный экземпляр).

Пара (st_dev, st_ino) будет идентифицировать конкретный файл (по крайней мере, если вы не размонтируете файловую систему, в которой находится этот индекс).

Как указано в inode (7) :

Устройство, в котором находится индекс

Каждый индекс (как и связанный с ним файл) находится в файловой системе, размещенной на устройстве. Это устройство идентифицируется комбинацией его основного идентификатора (который идентифицирует общий class устройства) и вспомогательного идентификатора (который идентифицирует конкретный экземпляр в общем classе).

Номер инода

Каждый файл в файловой системе имеет уникальный номер инода. Номера индексов гарантированно будут уникальными только внутри файловой системы (т. Е. Одни и те же номера узлов могут использоваться разными файловыми системами , что является причиной того, что жесткие ссылки могут не пересекать границы файловой системы).