Co je to Soft Link a Hard Link v Linuxu?
Symbolický nebo soft link je skutečný odkaz na původní soubor, zatímco pevný odkaz je zrcadlová kopie původního souboru. Pokud smažete původní soubor, soft link nemá žádnou hodnotu, protože ukazuje na neexistující soubor.
Ale v případě pevného odkazu je to úplně naopak. I když odstraníte původní soubor, pevný odkaz bude stále obsahovat data původního souboru. Protože pevný odkaz funguje jako zrcadlová kopie původního souboru.
Stručně řečeno, měkký odkaz
- může procházet systémem souborů,
- umožňuje propojení mezi adresáři,
- má jiné číslo inodu a oprávnění k souboru než původní soubor,
- oprávnění nebudou aktualizována,
- má pouze cestu k původnímu souboru, nikoli obsah.
Pevný odkaz
- nemůže překročit hranice systému souborů (tj. pevný odkaz může fungovat pouze na stejném systému souborů),
- nelze propojit adresáře,
- má stejné číslo inodu a oprávnění jako původní soubor,
- oprávnění budou aktualizována, pokud změníme oprávnění zdrojového souboru,
- má skutečný obsah původního souboru, takže obsah můžete stále zobrazit, i když byl původní soubor přesunut nebo odstraněn.
Stále to nechápete? Dovolte mi, abych vám ukázal několik praktických příkladů.
Jak vytvořit měkký odkaz nebo symbolický odkaz
Vytvořme prázdný adresář s názvem "test"
.
$ mkdir test
Změňte na "test"
adresář:
$ cd test
Nyní vytvořte nový soubor s názvem source.file
s některými údaji, jak je uvedeno níže.
$ echo "Welcome to OSTechNix" >source.file
Podívejme se na data souboru source.file.
$ cat source.file Welcome to OSTechNix
Tedy source.file
byl vytvořen.
Nyní vytvořte symbolický nebo měkký odkaz na source.file
.
Chcete-li to provést, spusťte:
$ ln -s source.file softlink.file
Porovnejme data obou source.file
a softlink.file
.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix

Jak vidíte ve výše uvedeném výstupu, softlink.file
zobrazí stejná data jako source.file
.
Pojďme zkontrolovat inody a oprávnění softlink.file
a source.file
.
$ ls -lia
Ukázkový výstup:
total 12 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file 11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file

Jak vidíme na výše uvedeném snímku obrazovky, číslo inodu (11665731
vs 11665692
) a oprávnění k souboru (lrwxrwxrwx
vs -rw-r--r--
) jsou různé , i když softlink.file
má stejný obsah jako source.file
. Je tedy dokázáno, že soft link nesdílí stejné číslo inodu a oprávnění jako původní soubor.
Nyní odstraňte původní soubor (tj. source.file
) a uvidíte, co se stane.
$ rm source.file
Zkontrolujte obsah softlink.file
pomocí příkazu:
$ cat softlink.file
Ukázkový výstup:
cat: softlink.file: No such file or directory

Jak vidíte výše, neexistuje žádný takový soubor nebo adresář s názvem softlink.file
poté, co jsme odstranili původní soubor (tj. source.file
).
Nyní tedy chápeme, že měkký odkaz je pouze odkaz, který ukazuje na původní soubor. Softlink je jako zástupce souboru. Pokud soubor odstraníte, zástupce je k ničemu.
Jak již víte, pokud soft odkaz odstraníte, původní soubor bude stále dostupný.
Doporučené čtení:
- Jak vypsat symbolické odkazy v systému Linux
- Jak najít poškozené symbolické odkazy a odstranit je v systému Linux
Jak vytvořit pevný odkaz
Vytvořte soubor s názvem source.file
s určitým obsahem, jak je uvedeno níže.
$ echo "Welcome to OSTechNix" >source.file
Pojďme ověřit obsah souboru.
$ cat source.file Welcome to OSTechNix
source.file
byl nyní vytvořen.
Nyní vytvoříme pevný odkaz na source.file
jak je uvedeno níže.
$ ln source.file hardlink.file

Zkontrolujte obsah souboru hardlink.file
:
$ cat hardlink.file Welcome to OSTechNix
Zobrazí se hardlink.file
zobrazí stejná data jako source.file.
Pojďme zkontrolovat inode a oprávnění hardlink.file
a source.file
.
$ ls -lia
Ukázkový výstup:
total 16 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Nyní vidíme, že oba hardlink.file
a source.file
mají stejné číslo inodů (11665692
) a oprávnění k souboru (-rw-r--r--
) . Je tedy prokázáno, že soubor s pevným odkazem sdílí stejný počet inodů a oprávnění jako původní soubor.
Pozor: Pokud změníme oprávnění k source.file
, stejné oprávnění bude použito pro hardlink.file
také.
Nyní odstraňte původní soubor (tj. source.file
) a uvidíte, co se stane.
$ rm source.file
Zkontrolujte obsah hardlink.file
pomocí příkazu:
$ cat hardlink.file
Ukázkový výstup:

Jak vidíte výše, i když jsem smazal zdrojový soubor, mohu zobrazit obsah hardlink.file
. Je tedy prokázáno, že pevný odkaz sdílí stejné číslo inodu, oprávnění a data původního souboru.
Jaký je tedy rozdíl mezi pevným odkazem a normálním zkopírovaným souborem?
Možná se ptáte, proč bychom vytvořili pevný odkaz, když můžeme snadno zkopírovat/vložit původní soubor? Vytvoření pevného odkazu na soubor je něco jiného než jeho kopírování.
Pokud zkopírujete soubor, bude pouze duplikovat obsah. Pokud tedy upravíte obsah jednoho souboru (ať už původního nebo pevného odkazu), nebude to mít žádný vliv na druhý.
Pokud však vytvoříte pevný odkaz na soubor a změníte obsah kteréhokoli ze souborů, změna se projeví na obou.
Pojďme se podívat na source.file.
$ cat source.file Welcome to OSTechNix
Zdrojový soubor má jeden řádek, který říká - Vítejte v OSTechNix.
Přidejte nový řádek, například "Vítejte v Linuxu" v source.file
nebo hardlink.file
.
$ echo "Welcome to Linux" >>source.file
Nyní zkontrolujte obsah obou souborů.
$ cat hardlink.file Welcome to OSTechNix Welcome to Linux
$ cat source.file Welcome to OSTechNix Welcome to Linux

Vidět? Změny, které jsme právě provedli na source.file
jsou aktualizovány v obou souborech. Význam - oba soubory (zdrojový i pevný odkaz) se synchronizují.
Jakékoli změny, které provedete v libovolném souboru, se projeví v jiném souboru. Pokud normálně zkopírujete/vložíte soubor, neuvidíte žádné nové změny v jiném souboru.
Další podrobnosti najdete na manuálových stránkách.
$ man ln
Závěr
V této příručce jsme diskutovali o tom, co je měkký odkaz a pevný odkaz v Linuxu, jak vytvořit měkký a pevný odkaz pomocí příkladů příkazů a nakonec jsme vysvětlili rozdíl mezi pevným odkazem a normálním zkopírovaným souborem.
Doufám, že máte základní představu o tom, jak používat symbolický nebo měkký odkaz a pevný odkaz v Linuxu.