Ні, жорстке посилання зовсім інше. М'яке посилання ближче до ярлика Windows (хоча є важливі відмінності, символічні посилання більше схожі на ярлики Windows, ніж жорсткі). Жорстке посилання - це різна річ, і вона вам майже ніколи не знадобиться.
Коротко, з цією командою створюється м'яке посилання:
ln -s foo bar
Якщо ви запустите ls -l
, ви побачите:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
В ->
означає , що bar
є посиланням foo
. Отже, відкрившись, наприклад bar
, із текстовим редактором, фактично відкриється окремий файл foo
. Однак видалення bar
просто видалить ярлик, це не вплине на файл foo
.
З іншого боку, жорсткі посилання створюються за допомогою цієї команди:
ln foo bar
Якщо ви зараз запустите ls -l
, то жодних ознак між файлами немає:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Але - і це дуже важливо - це насправді той самий файл . Файли у файлових системах Unix зберігаються за допомогою inodes ; inode - це, по суті, те, як файлова система відображає ім'я файлу до певного місця на фізичному жорсткому диску. Отже, жорсткі посилання - це файли, які вказують на той самий inode, що і їх ціль. Іншим способом цього є те, що всі файли є фактично жорсткими посиланнями, що вказують на їхні вставки. Здійснення жорсткого посилання на файл просто створює новий покажчик (файл) у файловій системі, який вказує на той самий inode. Кожен inode може мати декілька файлів, що вказують на нього, або один, або жоден.
Щоб зрозуміти це більш чітко, використовуйте, ls -i
що показує, в якій точці пов'язаний файл. Створимо м'яке та жорстке посилання та подивимося, що станеться:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Тепер перевірте їхні вузли:
Як ви бачите вище, обидва foo
і HardLinkToFoo
мають однаковий inode (16648029), тоді як SoftLinkToFoo має інший (16648036).
Що станеться , якщо ми перейменуємо foo
з mv foo bar
?
Червоний колір вказує на розірвану м'яку ланку, таку, цілі якої вже не можна знайти. Це тому, що м'які посилання вказують на ім'я файлу, а не на його inode. Зауважте, що незважаючи на зміну імені, inode залишається тим самим, щоб жорстке посилання було нормальним, воно все одно працює.
Підсумовуючи, жорсткі посилання - це фактично два прояви одного файлу; вони є вказівниками на один і той же ділянку диска. М'які посилання - це лише ярлики. Якщо взяти аналогію з реальним світом, жорсткі посилання - це як два різні телефонні номери для однієї телефонної лінії, а м'які посилання - це як дві різні телефонні лінії в одному будинку.