Co je to pevný odkaz? — definice podle The Linux Information Project (LINFO)

Tvrdý odkaz je pouze dodatečný název pro existující soubor v Linuxu nebo jiných operačních systémech podobných Unixu.

Pro libovolný soubor lze vytvořit libovolný počet tvrdých odkazů, a tedy i libovolný počet názvů. Tvrdé odkazy lze vytvářet i na jiné tvrdé odkazy. Nelze je však vytvářet pro adresáře a nemohou překračovat hranice souborového systému ani přesahovat hranice diskových oddílů.

Operační systém nerozlišuje mezi názvem, který byl původně přiřazen souboru při jeho prvním vytvoření, a všemi pevnými odkazy, které jsou k tomuto souboru vytvořeny následně, kromě toho, že se jedná pouze o více názvů pro tentýž soubor. Je to proto, že původní název a všechny pevné odkazy ukazují na stejný inode. Inode je datová struktura (tj. optimalizovaný způsob ukládání informací), která uchovává všechny informace o souboru (např. jeho velikost, přístupová práva, kdy byl vytvořen a kde se v systému nachází) kromě jeho názvu (názvů) a jeho skutečných dat. Skutečnost, že čísla inodů jsou jedinečná pouze v rámci libovolného souborového systému, je důvodem, proč nefungují napříč souborovými systémy a oddíly.

Tvrdé odkazy se vytvářejí pomocí příkazu ln. Například následující příkaz vytvoří pevný odkaz s názvem hlink1 na soubor s názvem file1, oba v aktuálním adresáři (tj. adresáři, ve kterém uživatel právě pracuje):

ln file1 hlink1

Při vytvoření pevného odkazu není zřejmé, že by se lišil od jakéhokoli jiného souboru. To znamená, že tvrdé odkazy se při prohlížení pomocí příkazů, jako je ls (tj. seznam) a file (který se používá k určení typu všech zadaných souborů), jeví jako soubory stejného typu jako jejich cílové soubory (tj. soubory, na které jsou odkazovány). Stejně tak při zobrazení v grafickém uživatelském rozhraní (GUI) jsou ikony pevných odkazů totožné s ikonami jejich cílových souborů.

To, že počáteční jméno souboru a všechny pevné odkazy na tento soubor sdílejí stejný inode, lze jasně vidět při použití příkazu ls s volbou -i (tj. inode). Tak například následující příkaz by ukázal, že čísla inodů souborů1 a hlink1 z výše uvedeného příkladu jsou totožná:

ls -i file1 hlink1

Počet pevných odkazů na libovolný soubor je uveden ve druhém sloupci výstupu vytvořeného pomocí příkazu ls s volbou -l (tj. long). Je vidět, že číslo je součtem cílového souboru a všech pevných odkazů na něj (tj, součet počátečního názvu a všech následně přidaných názvů) a že je stejné pro cílový soubor i pro každý takový odkaz.

Tvrdé odkazy na soubory lze také najít pomocí příkazu find s volbou -type f (pro výběr pouze běžných souborů) a následnou volbou -links +1 (pro zobrazení všech běžných souborů s více než jedním tvrdým odkazem na ně) takto:

find -type f -links +1

Při změně obsahu souboru se zachová vazba na všechny tvrdé odkazy. Některé textové editory však mohou odkaz přerušit vytvořením nového inodu pro změněný obsah,1 a proto může být rozumné zkontrolovat důležité odkazy po úpravě souborů.

Příkaz rm na první pohled vypadá, že odstraňuje nebo maže soubory. Ve skutečnosti však snižuje počet pevných odkazů souboru (tj. počet jmen, která soubor má) o jedna a nemá přímý vliv na inode ani na data souboru. Když počet dosáhne nuly, soubor jako by zmizel, protože již neexistuje žádný snadný způsob, jak na něj odkazovat. Data souboru jsou však skutečně odstraněna pouze tehdy, když je místo (místa) na pevném disku (HDD) nebo jiném paměťovém médiu, které je obsahuje, přepsáno novým souborem.

Tak například následující příkaz odstraní pevný odkaz hlink1, který byl vytvořen ve výše uvedeném příkladu:

rm hlink1

Při opětovném použití rm s jedním zbývajícím názvem následujícím způsobem by pak byla data souboru prakticky nedostupná:

rm file1

Možná nejužitečnějším použitím pevných odkazů je umožnění souborů, programů a skriptů (tj.Tj. krátké programy), aby byly snadno přístupné v jiném adresáři než původní soubor nebo spustitelný soubor (tj, verzi programu připravenou ke spuštění). Zadání názvu pevného odkazu způsobí spuštění programu nebo skriptu stejným způsobem jako při použití jeho původního názvu.

Symbolické odkazy, nazývané také měkké odkazy, jsou užitečnější než pevné odkazy, protože je lze vytvářet jak na adresáře, tak na soubory v různých souborových systémech a na různých diskových oddílech. Při použití grafického uživatelského rozhraní mají symbolické odkazy navíc speciální ikony, které je okamžitě identifikují jako odkazy, a ne jako běžné soubory. Jejich nevýhodou však je, že se stávají nepoužitelnými, pokud je jejich cílový soubor smazán.

Symbolické odkazy se povrchně podobají pevným odkazům v tom, že jsou dalším způsobem, jak poskytnout více názvů pro libovolný soubor. Příkaz aliasu je však zabudován do shellu (tj. programu, který poskytuje pouze textové uživatelské rozhraní), nikoli jako samostatný program, a jeho mechanismus je velmi odlišný od mechanismu pevných odkazů. Podobně jako symbolické odkazy lze aliasy používat nejen pro soubory, ale také pro adresáře a mohou překračovat hranice souborového systému a diskových oddílů. Kromě toho lze alias použít jako zkrácený název pro libovolný text shellu (tj. příkaz nebo sérii propojených příkazů včetně tbeir voleb a/nebo argumentů).

________
1Testy v systému Red Hat Linux 9 zjistily, že při úpravě souborů pomocí textového editoru gedit docházelo k porušování pevných odkazů. Nebyly však porušeny při použití textových editorů vi a Abiword a hexadecimálního editoru KHexEdit ve stejné verzi systému Linux. Neschopnost programu gedit zachovat pevné odkazy byla způsobena tím, že ve skutečnosti vytváří kopii upraveného souboru, kterou ukládá (a tím i nové číslo inodu), místo aby provedl změny v původním souboru, ale tato kopie má název původního souboru. Podobný test s novější verzí geditu (2.14.0) v systému Fedora Core 5 však ukázal, že problém byl odstraněn a k přerušení odkazů nedošlo.

.