как работает жесткая ссылка и мягкая ссылка

0

Концепция довольно сложна для понимания.

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

Что я не понимаю, так это то, почему, когда вы указываете на файл с жесткой ссылкой, а затем подавляете исходный файл, жесткая ссылка все еще представляет файл, а файлы все еще существуют тогда?

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

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

Но если это мягкая ссылка, у нас просто есть текстовый файл, который показывает каталог разыскиваемого файла, поэтому он не имеет отношения к состоянию исходного файла, это моя теория, я надеюсь, что кто-то объяснит и исправит меня.

Илиес Бехтауи
источник
может быть, это интересно для вас askubuntu.com/questions/108771/…
RamonRobben
Люди с большей вероятностью прочитают ваш вопрос / ответ, если вы отформатируете его, чтобы он не был стеной текста . Пожалуйста, прочитайте справку Markdown и отредактируйте свой вопрос, чтобы добавить абзацы и
маркеры
1
Связанный, возможный обман: superuser.com/questions/299498/what-is-a-hard-link-in-linux
Мокубай

Ответы:

1

Что я не понимаю, так это то, почему, когда вы указываете на файл с жесткой ссылкой, а затем подавляете исходный файл, жесткая ссылка все еще представляет файл, а файлы все еще существуют тогда?

Жесткие ссылки - это, в основном, имена, прикрепленные к индоду, и оригинальное имя, которое вы даете новому файлу, также является жесткой ссылкой. Поэтому, если вы удаляете оригинал, вы на самом деле не «подавляете исходный файл» - вы просто удаляете его исходную жесткую ссылку.

Системный вызов «Удалить файл» также называется unlink(2)- см. Документацию по Linux или FreeBSD .

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

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

(В большинстве систем Unix также могут существовать файлы без ссылок (без имен) - пока процесс сохраняет дескриптор. Это обычная уловка, используемая с временными файлами: создайте большой файл в / tmp и немедленно отсоедините его. )

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

Звучит правильно.

grawity
источник
спасибо, можете ли вы рассказать мне немного больше об этих inode? поэтому, когда я смотрю на мои директории, жесткий диск не ищет файлы, он загружает только все ссылки, которые он может найти, поэтому навигация такая быстрая? Кроме того, если у меня есть 4 ссылки и я подавляю оригинал, как компьютер выберет следующее официальное имя файла, если у меня есть жесткие и программные ссылки для файла, с какой ссылкой будет работать компьютер
Илиес Бехтауи
Нет такого понятия, как «официальное имя файла». Все жесткие ссылки - как оригинальные, так и созданные позже - являются в равной степени «официальными».
grawity
спасибо, это был просто способ сказать имя, которое сейчас отображается, или имя файла
Ilies Bekhtaoui,
Но они все отображаются одинаково. Там нет «имя».
Гравитация
но когда вы отображаете файлы, он выбирает хотя бы одно имя, а это первое, что ему когда-либо было присвоено, нет?
Илии Бехтауи