Що таке жорстке посилання в Linux?


9

Я шукав навколо і намагаюся зрозуміти різницю між жорсткою ланкою та символічною ланкою (м'яке посилання).

Я знайшов це посилання досить корисним. Але я все ще не дуже зрозумілий. Я розумію, м'яке посилання - це не копія оригінального файлу, але тверда посилання - це копія чи ні?

Відповіді:


15

Для використання аналогії з доставкою пошти символічне посилання є чимось на зразок адреси переадресації ... коли щось намагається відкрити символічне посилання, воно відкриває "файл" (не буквально файл, хоча), який зберігається там, і бачить, що це замість цього слід переглянути файл з іншим іменем, щоб він відкрив інший файл.

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

Тож жорстке посилання - це не копія, оскільки файл зберігається лише один раз (але з кількома іменами). Але вона поводиться дуже схоже на копію, тому що ви можете отримати доступ до тієї самої інформації з двох імен файлів.


+1 за дуже приємну аналогію, яка б спростила мені речі, коли я намагався обходити це.
Джон Гарденєр

1
+1, але дві незначні деталі: 1) Можна мати кілька адрес для одного і того ж місця в реальному світі, тільки не звичайні. 2) Мабуть, найважливіша відмінність між жорстким посиланням та копією полягає в тому, що, якщо у вас є, /fooі /barзміна /fooтакож зміниться, /barякщо вони є жорсткими посиланнями (тому що це два імені для одного файлу), але не, якщо вони копії (тому що це два абсолютно незалежні файли).
Дейв Шерохман


3

Коли ви робите жорстке посилання, це означає, що один і той же файл з’являється в двох різних місцях. Файл справді є лише посиланням на набір блоків даних на дисках, тому жорстке посилання додає ще одне посилання. Файли рідко справді видаляються; посилання просто видаляються, тому отримати доступ до даних неможливо. Ось чому, коли ви видаляєте файл, який ви створили як жорстке посилання, інший оригінальний файл залишається і навпаки.

З іншого боку, симпосилання - це напрямок доступу до файлу з певним іменем. Він повідомляє будь-якій програмі: "Якщо ви хочете використовувати цей файл, він там". Ось чому, якщо ви видалите ціль символьної посилання, символьне посилання розривається. І якщо ви видалите посилання, ціль не впливає.


2

Файл у * nix-системі має дві частини. одна частина даних та інша є inode. inode зберігає мета (інформація, що стосується таких даних, як місце, де на HDD він зберігається) інформацію. Жорстке посилання створює точну копію цього inode. У той час як посилання sym створює inode, який вказує на inode фактичної inode. Таким чином, дані inode в жорсткому посиланні є такими ж, як цільові, але різні дані в sym-посиланні. Отже, якщо говорити про довгу історію, короткі символьні посилання та жорсткі посилання відрізняються своїм вмістом даних inode, а не файловими даними. Це моє розуміння різниці між символьною ланкою та жорсткою ланкою. Спочатку у мене був важкий час, коли я розумів це, оскільки це щось більш цікаве для розробників, і я не розробник. О, знаючі, будь ласка, виправте мене, якщо я помиляюся.


3
"Каталог" у * nix - це список назв файлів та номерів inode. Жорсткі посилання - це дві записи каталогів, які мають однаковий номер inode, і, отже, посилаються на той самий inode, а не на копії inode. Симпосилання - це запис каталогу, який вказує на інший запис у каталозі (за назвою), а не на який-небудь конкретний inode. (Гаразд, він насправді має inode, але цей inode посилається на запис каталогу, а не на
подачу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.