Каква е разликата между твърда връзка и символична връзка?

Мисля, че всички можем да се съгласим, че животът става малко по-лесен, когато можем да създадем преки пътища. Същото важи и за програмирането - е, понякога го прави. В тази публикация ще обясня разликата между символна връзка и твърда връзка, когато я използвате във вашия Linux терминал.

Символична връзка

Символична връзка, известна още като символна връзка, се използва за създаване на връзка между множество файлове или папки. Тази връзка всъщност не е сам файл или папка, а просто сочи към оригиналния файл или директория. Синкликовете улесняват достъпа до информация в действителния файл или директория, тъй като може да бъде доста досадно да се копае за него. Тези връзки обикновено се използват, за да стигнат до директории.

За да създадете символна връзка има определен синтаксис (формула), който искате да следвате в терминала.

ln -s [оригинална директория или файл] [име за символната връзка]

Разбивка на синтаксиса:

Командата 'ln' (означава връзка) се използва за създаване на връзка, така че това става първо.
След това използвате флага „-s“, за да уведомите терминала, че създавате специално символична връзка.
След това искате да посочите файла или директорията, за която използвате symlink. Можете да напишете цялото име на пътя или да използвате „.“ Или „/“, за да преминете към файла или директорията.
И накрая, искате да посочите името за връзката.
Натиснете Enter и вашата символна връзка ще бъде създадена!
ЗАБЕЛЕЖКА: няма нужда от скоби, те са само там, за да групират текста за по-малко объркване
Илюстрация за символична връзка: @hiljaa

Твърда връзка

Твърдата връзка е заместващо име на съществуващ файл и може да бъде свързана и с други твърди връзки. Този тип връзки обикновено се използват за достъп до файлове в различни директории - или папки. За разлика от символните връзки, твърда връзка се свързва директно с данните на файла, известни също като inodes.

Inode е структура на данни във файлова система в Linux и други подобни на Unix операционни системи, която съхранява цялата информация за даден файл, с изключение на неговото име и действителните му данни. Структурата на данните е начин за съхранение на данни, така че да може да се използва ефективно.

За да създадете твърда връзка има определен синтаксис (формула), който искате да следвате в терминала.

ln [оригинален файл] [име за твърда връзка]

Разбивка на синтаксиса:

Командата 'ln' (означава връзка) се използва за създаване на връзка, така че това става първо.
Няма нужда от знака 's', тъй като този път не създавате символна връзка.
След това искате да посочите файла или директорията, за която използвате symlink. Можете да напишете цялото име на пътя или да използвате „.“ Или „/“, за да преминете към файла или директорията.
И накрая, искате да посочите името за връзката.
Натиснете Enter и вашата твърда връзка ще бъде създадена!
ЗАБЕЛЕЖКА: няма нужда от скоби, те са само там, за да групират текста за по-малко объркване
Илюстрация за твърда връзка: @hiljaa

http://clubmate.fi/symbolic-links-and-hard-links-creating-updating-deleting-and-all-that/

Разлика на връзки и твърди връзки:

от мен

Ако погледнете file_1 и hard_link_A, можете да видите, че inode е същият. Но забележете, че символната връзка има различна стойност на inode. Това е така, защото твърдите връзки са почти като копия, докато символните връзки са по-скоро като различна версия на файла, която сочи към оригиналния файл или директория.

Внимавай!

Трябва да знаете какво може да се случи, ако решите, че искате да изтриете символна връзка или твърда връзка.

Пример за това какво се случва, ако изтриете символната връзка или твърдата връзка:

Снимка имате своя inode1. Свързан към него е file_1, след това свързвате hard_link_A и hard_link_B. След това създавате sylink, Symlink_1, към hard_link_A. Ако изтриете hard_link_A и след това се опитате да получите достъп до Symlink_1, терминалът ще ви даде грешка, защото сте изтрили връзката с inode1, така че Symlink_1 вече няма свързани с нея данни. НО, все още имате hard_link_B, който все още е свързан с inode1 и данните вътре. BUUUTTT, ако изтриете и двете твърди връзки, свързани към inode1, тогава inode1 вече не съществува. Терминалът ще види, че няма свързан файл, така че няма данни за съхраняване; следователно терминалът ще го разглежда като свободно пространство.