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

Жълти страници

Файловата система на UNIX

В операционната система UNIX и подобни на UNIX системи всичко е или файл или процес. В тази статия ще разгледаме внимателно файловете на UNIX системи, за да разберем по-добре символичните и твърди връзки.

В UNIX системата има три вида файлове - обикновени файлове, файлове с директории и специални файлове.

Обикновените файлове или файлове в UNIX операционна система са съвкупност от свързани данни, които са под същото име. За потребителя файловете се появяват като един непрекъснат блок. Директориите или папките са файлове, които изброяват други файлове.

Файлове с директории или директории е файл, който изброява други файлове.

Специалните файлове представляват устройства за вход и изход.

Файловете в UNIX са организирани в йерархична структура, която наподобява структура като дърво.

Кредити към проекта за документация на Linux (TLDP)

Подобно на дърво, има корен, откъдето започва всичко. Коренът на вашата дървесна файлова система ще започне в основната директория. Кореновата директория е представена от челна черта (/).

Ако задълбочим по-дълбоко във файлова система, ще видим, че всеки файл има свързана структура на данни, наречена inode.

Какво е inode?

Inode е структура от данни, която включва следната информация:

  • Дължина на файла.
  • Последно достъпно или променено време на файла.
  • Време на най-новата промяна.
  • Информация за собственика и групата (разрешения за достъп)
  • Брой връзки към файла.
  • Местоположение на мястото, където данните във файла се съхраняват на вашия диск.

Най-важната характеристика на inodes е, че той записва действителното местоположение на данните във файла. Можем да мислим за inode като за запис в Жълтите страници! Вписване в Жълтите страници, като индея, съхранява информация като адреси. За да се позовем на inode, използваме името на файла.

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

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

Твърди и символни връзки

Като цяло, връзката е начин за свързване на няколко имена на файлове към едни и същи файлови данни. Можем да формираме тази връзка, като направим твърда или мека връзка.

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

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

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

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

Сега, когато знаем какво е връзка, как можем да създадем такава? Нека да разгледаме следващия раздел.

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

За да създадем връзка между файлове, използваме следната команда: ln. Можем да създадем твърда връзка или символична връзка с тази команда.

Общ формат:

Страница за ръководство за ln

Ако използваме първия ред под синопсис, за да форматираме нашата команда, можем да създадем връзка към изходния файл с името на целевия файл.

Във втория ред можем да създадем връзка към изходния файл в целевата директория.

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

За да създадем символна връзка, можем да използваме следната команда:

Създаване на мека връзка

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

За да създадем твърда връзка, можем да използваме следната команда:

Създаване на твърда връзка

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

Символична връзка е указател към целевия файл.

Твърда връзка е указател към inode на целевия файл.

В резултат на това възникват следните поведения:

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

Сега, когато научихте за символични и твърди връзки, продължете и направете свои собствени!

Източници:

https://www.cs.dartmouth.edu/~campbell/cs50/shell.html

http://www.geekride.com/hard-link-vs-soft-link/