Древовидные операции (find) с использованием индексов (номеров inode) для обращения к файлам/каталогам

В Gnome вы можете выполнить следующие действия.

Нажмите ..

  1. Действия — Показать приложения — Настройки — Пользователи.

Здесь вы увидите данные пользователя для входа.
Сделайте пароль - Нет.
Автоматический вход - ВКЛ.

Затем перезагрузите компьютер. Проблема решена.

1
17.01.2017, 10:31
1 ответ

Из контекста я делаю вывод, что когда вы пишете «индексы», вы на самом деле имеете в виду inodes . В случае, если вы имели в виду индексы, обратите внимание, что каталог , а не состоит из списка файлов в четко определенном порядке, где вы можете сказать: «Мне нужен файл с индексом 3». Каталоги индексируются по именам: вы говорите: «Мне нужен файл с именем foo ». Порядок файлов в каталоге может измениться в любое время.

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

Даже если бы существовал способ найти файл по inode, это не решило бы вашу проблему, а просто немного переместило бы его. Это сделает его прозрачным, когда файл будет переименован после того, как find нашел его, но до того, как он что-то с ним сделает. Однако, если файл был удален и был создан другой файл с тем же индексом, find обратится не к тому файлу.

Файловый API не позволяет сделать атомарный снимок дерева каталогов. Есть несколько решений вашей проблемы; какой из них может работать для вас, зависит от вашего сценария использования.

  • Убедитесь, что ваша задача справляется с модификациями дерева, с которым она работает.
  • Убедитесь, что все приложения, которые изменяют дерево каталогов, приостановлены во время выполнения вашей задачи.
  • Используйте API нижнего уровня, чтобы сделать снимок и работать с снимком (только для чтения). Некоторые файловые системы, такие как zfs и btrfs, могут это делать, а также типы томов, такие как LVM.
0
28.01.2020, 01:03

Теги

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