Co je to měkký a tvrdý odkaz v Linuxu?

Symbolický nebo měkký odkaz je skutečný odkaz na původní soubor, zatímco tvrdý odkaz je zrcadlová kopie původního souboru. Pokud původní soubor odstraníte, nemá měkký odkaz žádnou hodnotu, protože odkazuje na neexistující soubor. V případě tvrdého odkazu je to však zcela naopak. I když odstraníte původní soubor, pevný odkaz bude stále obsahovat data původního souboru. Protože tvrdý odkaz funguje jako zrcadlová kopie původního souboru.

Zjednodušeně řečeno, měkký odkaz

  • může procházet napříč souborovým systémem,
  • 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 jeho obsah.

Tvrdý odkaz

  • nemůže překročit hranice souborového systému (tj.Tj. tvrdý odkaz může fungovat pouze ve stejném souborovém systému),
  • nemůže propojovat adresáře,
  • má stejné číslo inodu a oprávnění původního souboru,
  • oprávnění se aktualizují, pokud změníme oprávnění zdrojového souboru,
  • má skutečný obsah původního souboru, takže obsah lze stále zobrazit, i když původní soubor přesuneme nebo odstraníme.

Stále to nechápete? No, dovolte mi, abych vám ukázal několik praktických příkladů:

Vytvoření softwarového nebo symbolického odkazu

Vytvořme prázdný adresář s názvem „test“.

$ mkdir test

Přejděte do adresáře „test“:

$ cd test

Nyní vytvořte nový soubor s názvem source.file s některými daty, jak je uvedeno níže.

$ echo "Welcome to OSTechNix" >source.file

Podívejme se na data souboru source.file.

$ cat source.fileWelcome to OSTechNix

No, zdroj.soubor byl vytvořen.

Nyní vytvořte symbolický nebo softwarový odkaz na zdrojový soubor.

Proto spusťte:

$ ln -s source.file softlink.file

Porovnejme data zdrojového souboru i softwarového odkazu.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 zobrazuje stejná data jako source.file.

Zkontrolujme inody a oprávnění softlinku.file a source.file.

$ ls -lia

Ukázka výstupu:

total 1211665675 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.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file

Jak vidíme na výše uvedeném obrázku, číslo inodu (11665731 vs 11665692) a oprávnění souboru (lrwxrwxrwx vs -rw-r–r–) se liší, přestože softlink.má stejný obsah jako soubor source.file, . Je tedy prokázáno, že softlink nesdílí stejné číslo inodu a oprávnění původního souboru.

Nyní odstraňte původní soubor (tj. source.file) a uvidíte, co se stane.

$ rm source.file

Zkontrolujte obsah souboru softlink.file pomocí příkazu:

$ cat softlink.file

Ukázka výstupu:

cat: softlink.file: No such file or directory

Jak vidíte výše, po odstranění původního souboru (tj. source.file) neexistuje žádný takový soubor nebo adresář s názvem softlink.file. Nyní tedy chápeme, že softlink je pouze odkaz, který odkazuje na původní soubor. Softlink je jako zástupce souboru. Pokud soubor odstraníte, je zástupce k ničemu.

Jak již víte, pokud odstraníte softwarový odkaz, původní soubor bude stále k dispozici.

Návod k přečtení:

  • Jak vypsat symbolické odkazy v Linuxu
  • Jak najít nefunkční symbolické odkazy a odstranit je v Linuxu

Vytvoření tvrdého odkazu

Vytvořte soubor s názvem source.s určitým obsahem, jak je uvedeno níže.

$ echo "Welcome to OSTechNix" >source.file

Ověříme obsah souboru.

$ cat source.fileWelcome to OSTechNix

soubor source.file byl nyní vytvořen.

Nyní vytvoříme pevný odkaz na soubor source.file, jak je uvedeno níže.

$ ln source.file hardlink.file

Zkontrolujte obsah souboru hardlink.file.

$ cat hardlink.fileWelcome to OSTechNix

Vidíte, že soubor hardlink.file zobrazuje stejná data jako soubor source.file.

Zkontrolujeme inody a oprávnění souborů hardlink.file a source.file.

$ ls -lia

Ukázka výstupu:

total 1611665675 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.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

Nyní vidíme, že jak hardlink.file, tak source.file mají stejné číslo inodu (11665692) a oprávnění souboru (-rw-r–r–). Je tedy prokázáno, že soubor hardlink.file má stejné číslo inodů a stejná oprávnění jako původní soubor.

Poznámka: Pokud změníme oprávnění souboru source.file, budou stejná oprávnění aplikována i na soubor hardlink.file.

Nyní odstraňte původní soubor (tj.e source.file) a uvidíme, co se stane.

$ rm source.file

Zkontrolujte obsah souboru hardlink.file pomocí příkazu:

$ cat hardlink.file

Ukázka výstupu:

Jak vidíte výše, i když jsem odstranil zdrojový soubor, mohu zobrazit obsah souboru hardlink.file. Je tedy prokázáno, že hardlink sdílí stejné číslo inodu, oprávnění a data původního souboru.

Jaký je tedy rozdíl mezi hardlinkem a normálním zkopírovaným souborem?

Možná si říkáte, proč bychom vytvářeli hardlink, 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 zkopírování.

Pokud soubor zkopírujete, pouze zduplikujete jeho obsah. Pokud tedy změníte obsah jednoho souboru (ať už původního nebo pevného odkazu), nemá to žádný vliv na ten druhý. Pokud však vytvoříte pevný odkaz na soubor a změníte obsah některého ze souborů, změna se projeví v obou.

Podívejme se na zdrojový.soubor.

$ cat source.file Welcome to OSTechNix

Ve zdrojovém souboru je jediný řádek, který říká – Vítejte v OSTechNix.

Přidejte nový řádek, například „Vítejte v Linuxu“ do souboru source.file nebo hardlink.file.

$ echo "Welcome to Linux" >>source.file

Nyní zkontrolujte obsah obou souborů.

$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux

Vidíte? Změny, které jsme právě provedli v souboru source.file, se aktualizují v obou souborech. Což znamená – oba soubory (zdrojový i pevný odkaz) se synchronizují. Jakékoli změny provedené v kterémkoli souboru se projeví i v druhém souboru. Pokud soubor normálně zkopírujete/vložíte, žádné nové změny v druhém souboru neuvidíte.

Podrobnější informace najdete v manuálových stránkách.

$ man ln

To je prozatím vše. Doufám, že jste získali základní představu o symbolickém nebo měkkém a tvrdém odkazu.

Díky za zastavení!

Pomozte nám, abychom vám pomohli:

  • Přihlaste se k odběru našeho e-mailového zpravodaje : Zaregistrujte se nyní
  • Podpořte OSTechNix : Přispějte přes PayPal
  • Stáhněte si zdarma elektronické knihy a videa : OSTechNix na TradePub
  • Spojte se s námi: Reddit | Facebook | Twitter | LinkedIn | RSS kanály

Přeji hezký den!!!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.