Каква е разликата между твърда връзка и мека връзка в UNIX / LINUX

Изобразително описание на разликата между твърда връзка и мека връзка в UNIX / LINUX

Какво е символна връзка или символна връзка?

Символичната връзка е вид пряк път за света UNIX / LINUX. Символична връзка съдържа информация за местоназначението на файл.

Твърдата връзка е различна от меката връзка в това, че твърдата връзка е препратка към директория или указател към файл. Така твърдата връзка съдържа действителния адрес на файла и всички промени, направени в твърдата връзка, се отразяват в самия файл или директория. Ограниченията на твърдата връзка са, че твърдата връзка МОЖЕ САМО ДА СЕ ИЗПОЛЗВА ДАННИ, КОИТО СА В СЪЩАТА СЪЩА ФАЙЛНА СИСТЕМА.

За тези от нас, които използват в света на Windows, ние използваме за файлове, живеещи в директории, но в UNIX / LINUX файловете не се съхраняват в директории, а им се присвоява номер на inode, който Linux използва, за да намери файловете. Всеки файл може да има множество твърди връзки, които са разположени в различни директории. Един файл не се унищожава, докато не бъдат пуснати всички твърди връзки към него.

Нека уточним критичните разлики между твърди и меки връзки в Linux:

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

Сега нека разгледаме как да създадете твърда връзка.

В Linux използваме командата ln така:

> ln original_file link_file

Сега можем да разгледаме двата файла с командата:

ls -il original_file link_file

Резултатът от тази команда ще бъде

Charless-MBP: ~ charlesstewart $ ls -il original_file link_file

2758124 -rw-r - r - 2 служители на charlesstewart 0 септември 9 23:04 link_file

2758124 -rw-r - r - 2 служители на charlesstewart 0 септември 9 23:04 original_file

От демонстрацията можем да видим, че и двата файла имат един и същ номер на inode: 2758124, както и едни и същи разрешения и размер. Виждаме, че твърдата връзка не заема повече място в системата. Ако трябваше да изтрием оригиналния файл, твърдата връзка ще остане и съдържа каквато и да е информация в оригиналния файл.

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

Charless-MBP: ~ charlesstewart $ ls -F

Приложения / Документи / Филми / Снимки /

CLionProjects / Изтегляния / Музика / Публично /

Работен плот / библиотека / PdaNetUninstall.sh *

Charless-MBP: ~ charlesstewart $ ln Приложения myApplications

ln: Приложения: Е директория

Сега разглеждаме как да създадем символна връзка:

Charless-MBP: ~ charlesstewart $ ln -s original_file link_file

Charless-MBP: ~ charlesstewart $ ls -il

общо 16

2522158 drwx - - - @ 3 charlesstewart персонал 96 септември 4 10:51 Приложения

2212240 drwxr-xr-x 4 служители на charlesstewart 128 септември 9 20:46 CLionProjects

1000938 drwx - - - @ 4 charlesstewart персонал 128 септември 2 00:01 Desktop

1000926 drwx - - - @ 5 charlesstewart персонал 160 септември 9 21:16 Документи

1000928 drwx - - - + 16 служители на charlesstewart 512 септември 9 22:31 изтегляния

1000914 drwx - - - @ 63 charlesstewart персонал 2016 септември 4 10:51 Библиотека

1000990 drwx - - - + 3 служители на charlesstewart 96 август 31 14:15 Филми

1000933 drwx - - - + 4 служители на charlesstewart 128 септември 3 18:56 Музика

2155412 -rwxr-xr-x 1 служител на charlesstewart 238 31 август 17:51 PdaNetUninstall.sh

1000936 drwx - - - + 3 служители на charlesstewart 96 август 31 14:15 Снимки

1000986 drwxr-xr-x + 4 charlesstewart персонал 128 август 31 14:15 публично

2758214 lrwxr-xr-x 1 charlesstewart персонал 13 септември 9 23:12 link_file -> original_file

2758212 -rw-r - r - 1 служител на charlesstewart 26 септември 9 23:12 original_file

Забелязваме, че номерата на inode за двата файла са различни и разрешенията и размерите също са различни.

Дано това хвърли малко светлина върху разликата между меки и твърди връзки в Linux.