LINUX.ORG.RU
ФорумAdmin

Возможно ли оперировать файлом не через /path/to/file а по inode?

 


0

3

Сабж.

Я знаю как:

Узнать Inode файла filename:
ls -liah filename

Узнать filename файла по его inode:
find . -inum 402808

А как обратиться к файлу по его inode? Запустить исполнимый файл, просмотреть файл данных.

Если я в пределах диска(раздела) переименую либо перемещу файл в другой каталог, его Inode ведь не изменится?

Ответ на: комментарий от iliyap

может быть даже после перезагрузки

Это вобще не гарантируется, что после перезагрузки хендлы будут корректные. Хотя, может это лучше инодов, здесь, хотя бы, ядро может для name_to_handle_at() ответить EOPNOTSUPP, если ФС не подходящая.

А иноды ядро может вобще возвращать фейковые, если ФС их не поддерживает. И там уже от драйвера ФС зависит, будет ли инод у файла постоянный, или на каждый запрос будет возвращаться новое значение. И, вроде, нет системного вызова, чтобы спросить у ядра, поддерживает ли ФС иноды.

А хардлинков ТС боится, он не любит писать скрипты и т.д. Хотя, ИМХО, хардлинки для его задачи самое то, всегда можно прогнать find, чтобы найти файлы, у которых Links!=2 и удалить/восстановить...

mky ★★★★★
()
Ответ на: комментарий от Bers666

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

vbr ★★★★
()
Ответ на: комментарий от KivApple

Я ДАЛ ТЕМЕ ОТСТОЯТЬСЯ. Возвращаюсь…

Ваш ответ аргументирован и доводы понятны. Но мы как слепые мудрецы, трогающие слона за разные места и пытающиеся описать его.

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

hikikomori ★★★
() автор топика
Ответ на: комментарий от pfg

Мне не нужно вместо. Мне нужно в случае невозможности обнаружить файл по старому пути и имени достать его по известной inode. СУБД сохраняет inode каждого нужного ей файла, и в случае пропажи его по старому пути/имени, ищет его по inode, сверяет контрольную сумму, и если совпадает, обновляет путь файла в БД на новый. Таким образом мне не придётся каждый раз при смене путей или имён файлов прописывать новые пути ручками.

hikikomori ★★★
() автор топика
Ответ на: комментарий от mky

А хардлинков ТС боится, он не любит писать скрипты и т.д. Хотя, ИМХО, хардлинки для его задачи самое то, всегда можно … удалить/восстановить…

Это конечно способ, но я не хочу хранить на винте дополнительные лишние сущности, за которыми нужно будет следить. Я наоборот, стараюсь от лишнего избавляться. Мне тут все хардлинки советуют, как панацею, но в моём кейзе это лишняя ненужная обуза.

прогнать find, чтобы найти файлы, у которых Links!=2 и

А как кол-во указывать?

find -L ~ -type l ...?

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)

Inode не предназначен для адресации файла из приложений.

Поэтому правильный ответ на вопрос «как обратиться к файлу по его inode» - никак.

wandrien ★★
()
Ответ на: комментарий от hikikomori

Если ты таскаешь постоянно свои программы, ты можешь использовать относительные пути. Если ты ещё и постоянно меняешь взаимное расположение файлов одной и той же программы, при этом хочешь чтобы ничего не ломалось и волшебно работало. То... а нафига? Если всё работает вне зависимости от имён файлов, то зачем их переименовывать? Это лишает смысла всё действие. Зачем нужна операция, которая ничего не может ни сломать, ни починить?

KivApple ★★★★★
()