Содержит ли мягкая привязка к каталогу жесткие ссылки на его подфайлы?

Предположим, что у меня есть следующая конфигурация:

  • Папка A
    • file1
    • file2

Затем я создаю мягкую ссылку из папки «А» следующим образом: ln -s AB чтобы мы теперь имели:

  • Папка A
    • file1
    • file2
  • Папка B (символическая ссылка для папки A (программная ссылка))
    • file1
    • file2

Теперь, когда я изменяю B/file1 , это изменение распространяется на A/file1 . Однако, похоже, что при использовании ls -l в BB/file1 и B/file2 не являются мягкими, связанными с A/file1 и A/file2 ! Что происходит?

Вопрос: Правда ли, что B/file1 жестко связан с A/file1 ? Другой способ расспросить об этом: верно ли, что когда вы софт-ссылку на каталог, что ее подфайлы становятся жесткими ссылками на подфайлы исходного каталога? Есть ли способ сделать все возможное?

2 Solutions collect form web for “Содержит ли мягкая привязка к каталогу жесткие ссылки на его подфайлы?”

Они не являются жесткими ссылками по двум причинам:

  1. Количество жестких ссылок для файлов в каталогах с программными ссылками, представленное через ls, равно 1. Если файлы были жестко связаны, счетчик будет равен 2 или более.
  2. Жесткие ссылки не могут охватывать файловые системы, в то время как софт-ссылки могут. Если бы были созданы жесткие ссылки, вы не смогли бы софт-каталогов ссылок в файловых системах.

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

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

Кажется, вы путаете вещи.

Символическая ссылка : символическая ссылка только указатель на другой путь в системе. Этот путь может существовать или нет, это не имеет значения, оно также может быть абсолютным или относительным. Символическая ссылка не имеет ничего общего с целевым файлом, она просто указывает. Это может быть даже на другом физическом диске. Его можно сравнить с гиперссылкой на веб-сайте.

Hardlink : жесткая ссылка – это присвоение имени файлу (именно номер inode файла). Это отношение называется сюръективным . Каждый файл имеет по крайней мере один hardlink, ссылающийся на его номер inode. Номер inode является ссылкой на файл. Таким образом, современные файловые системы не имеют назначения исправлений имени файла и фактического файла.

Если файл имеет 2 жестких ссылки, ссылающихся на его индексный дескриптор, и один из них удаляется (по системному вызову unlink() ), только эта жесткая ссылка удаляется, файл и индекс остаются нетронутыми (поэтому системный вызов называется unlink() не delete() ). Как только количество жестких ссылок уменьшается до нуля, inode, наконец, удаляется и, следовательно, файл.


Так это была теория.

Когда вы меняете B/file1 тогда также изменяется A/file1 , потому что это та же самая жесткая ссылка, ссылающаяся на тот же номер inode, который ссылается на тот же файл. Вы просто перешли через символическую ссылку A указывающую на каталог B , а не на реальный каталог B

  • Стратегии для поддержания ссылки на файл после его перемещения или переименования?
  • Рекурсивный scp без следующих ссылок или создания гигантского файла tar?
  • Как разбить две папки по инодам
  • Есть ли все равно, чтобы автоматически монтировать файловую систему, когда я открываю символическую ссылку на каталог в этой файловой системе?
  • некоторые общие библиотеки в / usr / local / lib не найдены, но они находятся в / usr / lib
  • Показать содержимое символической ссылки
  • читать только символическую ссылку или что-то подобное?
  • du skip символические ссылки
  • Как найти пакет, в котором установлена ​​команда, если «dpkg -S» не находит пути, потому что команда является символической ссылкой?
  • Есть ли способ не создавать сим-ссылку, если существует папка
  • Поиск тестируемой утилиты для получения абсолютного пути к относительной целевой символической ссылке
  • Linux и Unix - лучшая ОС в мире.