Что такое жесткая ссылка в Linux?

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

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

9 голосов | спросил icn 20 J0000006Europe/Moscow 2011, 07:36:39

4 ответа


15

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

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

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

ответил Flimzy 20 J0000006Europe/Moscow 2011, 07:48:45
3

Нет. A (вторая и вся последующая) жесткая ссылка на файл является указателем на те же inodes на диске.

ответил Ignacio Vazquez-Abrams 20 J0000006Europe/Moscow 2011, 07:43:40
3

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

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

ответил Michael Lowman 20 J0000006Europe/Moscow 2011, 07:51:18
2

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

ответил Naai Sekar 20 J0000006Europe/Moscow 2011, 10:24:42

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132