9

Я искал вокруг и пытаюсь понять разницу между жесткой ссылкой и символической ссылкой (soft link).

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

4 ответа4

15

Чтобы использовать аналогию с доставкой почты, символическая ссылка - это что-то вроде адреса пересылки ... когда кто-то пытается открыть символическую ссылку, он открывает "файл" (не буквально файл), сохраненный там, и видит, что он Вместо этого следует взглянуть на файл с другим именем, поэтому он откроет другой файл.

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

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

3

Нет. (Вторая и все последующие) жесткая ссылка на файл - это указатель на те же самые inode на диске.

3

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

С другой стороны, символическая ссылка - это направление доступа к файлу с определенным именем. Он говорит любым программам: «Если вы хотите использовать этот файл, он там». Вот почему, если вы удалите цель символической ссылки, символическая ссылка прекратит работу. И если вы удалите ссылку, цель не будет затронута.

2

Файл в * nix системе состоит из двух частей. одна часть данных, а другая - inode. В inode хранится мета-информация (информация, относящаяся к данным, например, место, где она хранится на жестком диске). Жесткая ссылка делает создает точную копию этого inode. В то время как ссылка sym создает индекс, который указывает на индекс фактического индекса. Таким образом, данные inode в hardlink такие же, как target, но разные данные в sym link. Короче говоря, ссылки sym и жесткие ссылки различаются по содержанию данных inode, а не данных файла. Это мое понимание разницы между символьной ссылкой и жесткой ссылкой. Поначалу мне было непросто понять это, так как это что-то более сложное для разработчиков, и я не разработчик. О знающие, поправьте меня, если я ошибаюсь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .