GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit pevné a měkké (symlink) odkazy na systémech Linux

V jakémkoli operačním systému založeném na Linuxu/Unixu je často moudré porozumět základním konceptům, pak jen jeden dokáže ocenit krásu příkazů a způsob jejich implementace.

Některé malé detaily nám velmi pomohou při ladění a odstraňování problémů v mnoha náročných situacích, pokud o těchto příkazech a souvisejících konceptech víme s dostatečným předstihem.

V tomto tématu se budu zabývat tím, co jsou odkazy, různé typy, rozlišovací znaky a jak je lze lépe použít spolu s požadovanými pojmy.

Spuštěním příkazu „man ln“ můžete vidět, že to říká „vytvořit propojení mezi soubory“ a neříká se o měkkých nebo pevných odkazech.

[email protected] ~}$ man ln

Podobně příkaz „man link“ popisuje „funkci volání odkazu pro vytvoření souboru“.

Soft-link:

Měkký odkaz, jak název napovídá, je pouze nový odkaz vytvořený na nový soubor. V tomto případě bude číslo inodu nového souboru ukazovat na starý soubor.

Pevný odkaz:

V tomto případě bude starý i nový soubor ukazovat na stejné číslo inodu.

Symbolický odkaz:

V některých variantách Unix/Linux jsou symbolické i měkké odkazy považovány za stejné. Ale skutečný rozdíl je v tom, že čísla inodů nového i starého souboru budou ukazovat na nové číslo inodu. To bude zcela záviset na implementaci.

Poznámka 1 :- V mnoha případech se terminologie symbolických a měkkých odkazů používá zaměnitelně. Ale člověk si musí být vědom toho, kdy co použít.

Použití příkazu „ln“ pro vytváření pevných a měkkých odkazů

Vytvoření pevného odkazu

1) Příkaz „man ln“ poskytne následující výstup.

[email protected] ~}$ man ln
ln  - make links between files

2) Když je příkaz „ln“ předán bez jakýchkoli argumentů, je vyvolána chyba „chybějící souborový operand“.

[email protected] ~}$ln
ln: missing file operand
Try 'ln --help' for more information.

3) Vytvoření pevného spojení mezi dvěma soubory. Nejprve zkontrolujte všechny existující soubory, pokud existují, jinak vytvořte soubor/soubory čerstvě a poté je propojte. Následuje postup krok za krokem,

[email protected] ~}$ ls -la
total 24
drwx------  4 root root 4096 Feb  6 15:23 .
drwxr-xr-x 23 root root 4096 Jan 25 16:39 ..
-rw-r--r--  1 root root 3122 Jan 25 16:41 .bashrc
drwx------  2 root root 4096 Feb  6 15:23 .cache
-rw-r--r--  1 root root    0 Jan 25 16:41 .hushlogin
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwxr-xr-x  2 root root 4096 Jan 25 16:41 .ssh

i) Vytvořte soubor pomocí příkazu „touch“

[email protected] ~}$ touch 123.txt
[email protected] ~}$ ls -l
total 0
-rw-r--r-- 1 root root 0 Feb  6 15:51 123.txt

ii) Zadejte obsah do souboru pomocí příkazu „cat“ a stiskněte „ctrl+c“ pro uložení a ukončení.

[email protected] ~}$ cat > 123.txt
Welcome to this World!
^C

iii) Vytvořte pevné propojení mezi soubory „123.txt“ a „321.txt“. V tomto případě již existoval „123.txt“ s obsahem „Vítejte v tomto světě“.

[email protected] ~}$ ln 123.txt 321.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt

iv) Zkontrolujte čísla inode (index uzel) souborů. Pro oba soubory je číslo inodu stejné a to je 794583. Zkontrolujte také obsah nového souboru „321.txt“, který je také stejný jako „123.txt“.

[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
$ cat 321.txt
Welcome to this World!

Poznámka 2 :- Číslo inodu je jedinečné číslo indexu generované pro jakýkoli soubor, který je vytvářen v operačních systémech Linux/unix. Tato čísla inodů jsou uložena v atributech adresáře/souboru v adresáři /proc. Ale v případě odkazů jsou tato čísla inodů sdílena se soubory a pouze cesta je aktualizována v tabulce souborů.

v) Vytvořte ještě jeden soubor s názvem „456.txt“ a propojte jej pomocí příkazu ln s „321.txt“. Nyní mají všechny tři soubory stejná čísla inodů. Obsah „456.txt“ bude stejný jako obsah původního souboru.

[email protected] ~}$  ls -li
total 12
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt
$ cat 456.txt
Welcome to this World!
[email protected] ~}$   ls -l
total 12
-rw-r--r-- 3 root root 23 Feb  6 15:52 123.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 3 root root 23 Feb  6 15:52 456.txt

vi) Když je zdrojový soubor nebo některý z těchto souborů odstraněn, nebude to mít vliv na ostatní soubory. Zdrojový soubor lze odstranit příkazem „rm“. Ani obsah jiného souboru nebude mít žádný vliv.

[email protected] ~}$ rm 123.txt
[email protected] ~}$ ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ ls -li
total 8
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
794583 -rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ cat 456.txt
Welcome to this World!

vii) Vytváření pevných odkazů mezi adresáři není povoleno.

[email protected] ~}$ls -l
total 8
-rw-r--r-- 2 root root 23 Feb  6 15:52 321.txt
-rw-r--r-- 2 root root 23 Feb  6 15:52 456.txt
[email protected] ~}$ mkdir abc
[email protected] ~}$ ln abc def
ln: abc: hard link not allowed for directory

viii) Jakékoli změny obsahu jednoho souboru ovlivní a odpovídajícím způsobem změní obsah druhého souboru, níže jsou vysvětleny kroky,

[email protected] ~}$ vi 321.txt
Welcome to this World!
You are welcomed to this new world
:wq
[email protected] ~}$ ls -l
total 12
-rw-r--r-- 2 root root   59 Feb  6 16:24 321.txt
-rw-r--r-- 2 root root   59 Feb  6 16:24 456.txt
drwxr-xr-x 2 root root 4096 Feb  6 16:18 abc
[email protected] ~}$ cat 456.txt
Welcome to this World!
You are welcomed to this new world

Vytvoření měkkého odkazu:

1)  Vytvořte soubor „src.txt“ pomocí příkazu „touch“ a zadejte obsah jako „Hello World“ pomocí příkazu cat a poté stiskněte „ctrl+c“ pro uložení a ukončení.

[email protected] ~}$ touch src.txt
[email protected] ~}$ cat > src.txt
Hello World
^C
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

2) Vytvořte cílový soubor jako „dst.txt“ a pomocí voleb příkazového řádku „ln -s“ vytvořte symbolický odkaz (nazývaný také jako měkký odkaz). Zkontrolujte obsah souboru „dst.txt“ a uvidíte stejný obsah jako soubor „src.txt“.

[email protected] ~}$ ln -s src.txt dst.txt
[email protected] ~}$  ls -l
total 4
lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt
[email protected] ~}$  cat dst.txt
Hello World

3) V případě symbolických odkazů se liší číslo inodu zdrojového souboru a cílového souboru. Také se v oprávnění objevuje písmeno „l“, což znamená, že se jedná o odkazy. „dst.txt–>src.txt“ bude nyní nově vytvořený odkaz.

[email protected] ~}$  ls -li
total 4
794584 lrwxrwxrwx 1 root root  7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root 12 Feb  6 16:32 src.txt

4) Symbolické vytváření adresářů je povoleno. To je vysvětleno níže v krocích

[email protected] ~}$ mkdir abc
[email protected] ~}$ ln -s abc def
$ ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

5) Číslo inodu pro všechny soubory/adresáře (zdroj a cíl se liší)

[email protected] ~}$  ls -li
total 8
794585 drwxr-xr-x 2 root root 4096 Feb  6 16:34 abc
794586 lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
794584 lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
794583 -rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt

6) Pro adresáře lze vytvořit symbolické odkazy, jak bylo vysvětleno dříve. Jakmile jsou tyto adresáře se symbolickým odkazem vytvořeny, lze uvnitř těchto adresářů vytvářet soubory. Díky tomu bude zajímavější vědět, jak se to nyní chová. Když jsou soubory vytvořeny ve zdrojovém adresáři, totéž se projeví i v cílovém adresáři. Následující kroky to jasně vysvětlují.

[email protected] ~}$ $ cd abc
[email protected] ~}$  touch 123.txt
[email protected] ~}$  vi 123.txt
Hello
:wq!
[email protected] ~}$  touch 456.txt
[email protected] ~}$  cd ..
[email protected] ~}$  ls -l
total 8
drwxr-xr-x 2 root root 4096 Feb  6 16:36 abc
lrwxrwxrwx 1 root root    3 Feb  6 16:34 def -> abc
lrwxrwxrwx 1 root root    7 Feb  6 16:33 dst.txt -> src.txt
-rw-r--r-- 1 root root   12 Feb  6 16:32 src.txt
[email protected] ~}$ cd def
[email protected] ~}$ ls -l
total 4
-rw-r--r-- 1 root root 6 Feb  6 16:37 123.txt
-rw-r--r-- 1 root root 0 Feb  6 16:36 456.txt
[email protected] ~}$ cat 123.txt
Hello

Poznámka 3 :- Můžeme mít libovolný počet vnořených odkazů. Ale uživatel/admin, který vytváří tyto symbolické odkazy, by si měl být vědom skutečnosti, že to povede ke zmatku. Někdy může být zapomenuto a může způsobit nežádoucí výsledky. Takže musí být opatrní.

Poznámka 4 :-  Existují některé možnosti „symbolického“ nebo „měkkého“ odkazu směřujícího na neexistující odkaz. Říká se tomu „visící odkaz“. To bude ukazovat nikam.

Poznámka 5 :- v linuxu/unixu se používají systémová volání k vytvoření symbolických OR pevných odkazů na programovací úrovni (pomocí programů C/C++ na systémové úrovni). Jedná se o 1) symbolický odkaz 2) symbolický odkaz.

Ty by neměly být zaměňovány s nástroji příkazového řádku, které jsem popsal výše.

Odstranění měkkých / symbolických odkazů

Měkké nebo symbolické odkazy se odstraní pomocí příkazů „rm“ a unlink.

Syntaxe:

# rm

# unlink

Odebrání adresářů Soft Link

Syntaxe:

# rm

# unlink

Závěry:

Vytváření odkazů, ať už tvrdých nebo měkkých, bude velmi užitečné pro administrátory a vývojáře. Výše uvedený referenční materiál se vám bude hodit, když pochopíte, jaký typ odkazu vytváříme a jak je užitečný. Tento článek také pomůže pochopit rozdíly a využití odkazů.


Linux
  1. Jak zajistit, aby byly soubory a adresáře neodstranitelné, a to i přes kořen v Linuxu

  2. Jak vytvořit pevné a symbolické odkazy v Linuxu

  3. Vysvětlení pevných odkazů a měkkých odkazů v Linuxu

  1. Jak vytvořit měkké a pevné odkazy v Linuxu

  2. RHEL 7 – RHCSA Poznámky:Vytvářejte pevné a měkké vazby.

  3. Co jsou měkké a pevné odkazy v systému souborů Linux

  1. Co jsou symbolické odkazy (Soft Links) a jak je vytvořit pod Linuxem

  2. Jak vytvořit a připojit souborové systémy v Linuxu

  3. Rozdíl mezi měkkými a pevnými odkazy v Linuxu