Чим відрізняється м'яке (символічне) посилання від жорсткого посилання?


59

Я чую, що зараз ви можете створювати м'які посилання і у Vista . Отже, яка різниця між м'яким (символічним) посиланням і жорстким посиланням на UNIX / Linux / Vista?

Чи є переваги використання одного над іншим? Або вони просто виконують дві чіткі цілі?


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

Чи слід це перенести на Unix & Linux? Дивіться unix.stackexchange.com/questions/9575/…
ripper234

2
Ні його не слід мігрувати. Оскільки оригінальне запитання не характерне лише для Unix - Windows підтримує жорсткі та м'які посилання.
Річард Вест

1
деякі програми зламаються (а іноді і погано), якщо ви використовуєте м'яке посилання - особливо для каталогів: програмне забезпечення буде відменене, а коли воно буде, і програма порівнює, скажімо /var/opt/log/appname(його конфігурацію) зі значенням dereferenced, скажімо /apps/appname/logs, скаржиться це не збіг. Виправлення цього полягає у використанні mount --bind(в Linux) для повторного повернення оригінального каталогу на нове місце.
warren

1
Просто для того, щоб очистити пару пунктів, що містяться в інших відповідях ... Windows може робити жорсткі посилання (хоча я вважаю, що вони поводяться дещо інакше, ніж в Unix). Погляньте на команду mklink та аргумент h. (Якщо ви введете mklink в командний рядок, ви побачите файл довідки, який включає основний синтаксис.)

Відповіді:


68

Жорстке посилання традиційно поділяє ті самі структури файлової системи (inode in unixspeak), тоді як soft-link - це перенаправлення імені шляху.

  • Жорсткі посилання мають бути в одній файловій системі, а посилання можуть перетинати файлові системи.
  • Файли з твердим посиланням залишаються зв'язаними, навіть якщо ви перемістите будь-який з них (якщо ви не перемістите один до іншої файлової системи, що запускає механізм копіювання та видалення). Файли з м'якими посиланнями розриваються, якщо ви переміщуєте ціль (оригінал), а іноді при переміщенні посилання (Ви використовували абсолютний чи відносний шлях? Чи все-таки він дійсний?).
  • Файли з твердим посиланням є рівними, тоді як оригінал є спеціальним у софтпосиланнях, а при видаленні оригіналу видаляються дані. Дані не зникають, поки всі тверді посилання не будуть видалені.
  • Softlinks може вказувати на будь-який мети, але більшість OS / файлові систем дозволяють hardlinking каталогів для запобігання циклів в файлової системі графа (за винятком з .і ..записів в UNIX каталогах , які є жорсткими посиланнями).
  • Софтпосилання можуть вимагати спеціальної підтримки інструментів для ходьби файлової системи. Читання на readlink (2) .

(Деякі деталі повернуті до відома mat1t . Спасибі.)


Приємний підсумок. Кожен користувач Linux повинен знати це (хоча жорсткі посилання дуже рідкісні).
Артем Русаковський

Відповідь dmckee містить деталі щодо семантики досить точно. Єдина деталь, яку я хотів би додати, - це пояснення того, що відбувається на більш високому рівні: м'яке посилання - це файл самостійно, а жорстке посилання - це запис каталогу, що вказує на існуючі дані. У Вікіпедії є детальніше про жорсткі та м'які посилання.
Містер Блискучий і Новий 安 宇

приємний підсумок, дуже корисний
Razique,

9
Слід також зазначити, що жорсткі посилання поділяють дозволи, а також інформацію про право власності.
Корі С.

6
Будь ласка, додайте, що 2 твердих посилання автоматично створюються з іменем. і .. кожного разу, коли ви створюєте папку. У Linux це єдині дійсні жорсткі посилання на папку.
Mircea Vutcovici

10

Підсумок полягає в тому, що символьне / коротке посилання діє як ярлик до місця розташування першого файлу, тоді як жорстке посилання - це ярлик до файлу на диску.

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

Існують також певні обмеження, наприклад, я не думаю, що ви можете створювати жорсткі посилання папок, але ви можете створювати м'які посилання з них. М'які посилання також можуть вказувати на файли / папки на різних дисках і розділах, тоді як жорсткі посилання не можуть.


-1

Система MS Windows завжди використовує м'які посилання (ярлики). Тобто посилання просто діє як ярлик, який вказує на розташування файлу. Якщо місце оригіналу переміщено, посилання розривається. Крім того, те, що ви робите для ярлика (наприклад, зміна дозволів чи зміна імені ярлика), не впливає на фактичний файл.

Тож питання почалося з неправильного припущення. Так, Vista використовує софтпосилання, але це не нове, тобто це ярлик MS.


3
Ні, NTFS підтримує жорсткі посилання та має з NTFS 3.1 (поточна версія з XP / 2003).
Кріс С
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.