Pevný odkaz ( anglicky hard link ) v souborových systémech kompatibilních s UFS je strukturální komponenta souboru – prvek adresáře , který jej popisuje .
Soubor v UFS je struktura datových bloků na disku, která má jedinečný indexový deskriptor ( inode ) a sadu atributů ( metainformace ). Pevný odkaz spojuje inode souboru s adresářem a dává mu název.
Soubor může mít několik pevných odkazů: v tomto případě se na disku objeví současně v různých adresářích nebo pod různými názvy ve stejném adresáři. Při úpravě souboru prostřednictvím jednoho z odkazů na něj se změní i obsah ostatních odkazů.
Počet pevných odkazů na soubor je uložen na úrovni systému souborů v metainformacích. Soubory s nulovými odkazy pro systém přestanou existovat a časem budou fyzicky přepsány. V souborových systémech OS podobných UNIX a v NTFS se při vytvoření souboru na něm automaticky vytvoří jeden pevný odkaz (na místo v systému souborů, kde je soubor vytvořen). Další odkaz v UNIXu lze vytvořit pomocí příkazu ln . Všechny odkazy jednoho souboru jsou si rovny a jsou od sebe k nerozeznání – nelze říci, že soubor existuje v tom a tom adresáři a na jiných místech jsou na něj pouze odkazy. Odstraněním odkazu se soubor odstraní pouze v případě, že se jednalo o poslední odkaz, kterýkoli z vytvořených odkazů, to znamená, že všechny ostatní pevné odkazy na něj již byly smazány.
Většina programů nerozlišuje mezi pevnými odkazy na jeden soubor, dokonce i systémové volání systému UNIX pro odstranění souboru se nazývá unlink, protože je určen k odstranění pevného odkazu na soubor.
Protože pevné odkazy odkazují na inode, který je jedinečný v rámci diskového oddílu, není možné vytvořit pevný odkaz na soubor v adresáři jiného oddílu. K překonání tohoto omezení se používají měkké odkazy .
Při pouhém kopírování souborů jsou pevné odkazy dereferencovány, to znamená, že každý odkaz se změní na samostatný soubor. K překonání tohoto omezení na systémech podobných UNIXu se používá potrubí příkazů find a cpio:
(ve zdrojovém adresáři) najít -hloubka -tisk0 | cpio -p -v -d --null <cílový adresář>(Přepínač -depth způsobí, že funkce find vytiskne názvy adresářů za jejich obsahem, takže příkaz cpio může znovu vytvořit strom souborů postupně. Přepínač -print0 zachovává mezery v názvech souborů změnou oddělovače řádků na znak NULL (kód 0x0). cpio přepínače: -p - potrubí režimu, -d pro vytvoření adresářů, -v pro zobrazení průběhu, --null pro označení, že oddělovač řádků je prázdný znak.)
Pevné odkazy jsou podporovány v systému souborů NTFS (od Windows NT4 [1] ). Pevný odkaz lze vytvořit pouze v rámci stejného logického oddílu a pouze pro soubory. V operačních systémech Windows není možné vytvořit pevný odkaz na adresář. Podobného efektu však lze dosáhnout pomocí spojovacího bodu NTFS .
Příkaz k vytvoření pevného odkazu v systému Windows je:
fsutil hardlink create новая_ссылка источникPříklad:
fsutil hardlink create "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"Všimněte si, že existující název souboru je na druhém místě a ten, který se vytváří, je první .
Počínaje Vista , Windows také představil mklink internal command , který umožňuje vytvářet pevné a měkké odkazy a také spojovací body. Příkaz pro vytvoření pevného odkazu na soubor v operačním systému Windows 7:
mklink /h новая_ссылка источникPříklad:
mklink /h "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"