Mi a lágy link és a kemény link Linuxban?

A szimbolikus vagy lágy link egy tényleges link az eredeti fájlhoz, míg a kemény link az eredeti fájl tükörmásolata. Ha törli az eredeti fájlt, a lágy hivatkozásnak nincs értéke, mert egy nem létező fájlra mutat. A hard link esetében azonban ez pont fordítva van. Még ha törli is az eredeti fájlt, a hard link akkor is rendelkezik az eredeti fájl adataival. Mivel a hard link úgy működik, mint az eredeti fájl tükörmásolata.

A soft link

  • a fájlrendszeren áthaladhat,
  • a könyvtárak közötti linkelést teszi lehetővé,
  • az eredeti fájltól eltérő inode számmal és fájljogosultságokkal rendelkezik,
  • a jogosultságok nem frissülnek,
  • csak az eredeti fájl útvonalát tartalmazza, a tartalmát nem.

A hard Link

  • nem lépheti át a fájlrendszer határait (i.azaz egy hardlink csak ugyanazon a fájlrendszeren belül működhet),
  • nem linkelhet könyvtárakat,
  • az eredeti fájl inode-számával és jogosultságaival azonos,
  • a jogosultságok frissülnek, ha megváltoztatjuk a forrásfájl jogosultságait,
  • az eredeti fájl tényleges tartalmával rendelkezik, így akkor is megtekinthető a tartalom, ha az eredeti fájlt áthelyezték vagy eltávolították.

Még mindig nem érted? Nos, hadd mutassak néhány gyakorlati példát.

Soft link vagy szimbolikus link létrehozása

Hozzunk létre egy üres könyvtárat “test” néven.

$ mkdir test

Váltás a “test” könyvtárba:

$ cd test

Most hozzunk létre egy új fájlt source.file néven néhány adattal az alábbiakban látható módon.

$ echo "Welcome to OSTechNix" >source.file

Nézzük meg a source.file adatait.

$ cat source.fileWelcome to OSTechNix

Nocsak, a source.fájlt létrehoztuk.

Most hozzuk létre a szimbolikus vagy lágy linket a source.file-ra.

Ezért futtassuk:

$ ln -s source.file softlink.file

Hasonlítsuk össze a source.file és a lágylink adatait.file.

$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix

Amint a fenti kimeneten látható, a softlink.file ugyanazokat az adatokat mutatja, mint a source.file.

Ellenőrizzük a softlink inode-jait és jogosultságait.file és source.file.

$ ls -lia

Mintakimenet:

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

Amint a fenti képernyőképen látjuk, az inode szám (11665731 vs 11665692) és a fájl engedélyei (lrwxrwxrwx vs -rw-r–r–) különböznek, annak ellenére, hogy a softlink.fájlnak ugyanaz a tartalma, mint a source.file-nak, . Így bebizonyosodik, hogy a softlink nem osztozik az eredeti fájl inode-számán és jogosultságain.

Most távolítsuk el az eredeti fájlt (azaz a source.file-t), és nézzük meg, mi történik.

$ rm source.file

A softlink.file tartalmának ellenőrzése a parancs segítségével:

$ cat softlink.file

Példakimenet:

cat: softlink.file: No such file or directory

Amint fent látható, nincs ilyen fájl vagy könyvtár softlink.file néven, miután eltávolítottuk az eredeti fájlt (azaz a source.file-t). Tehát most már értjük, hogy a soft link csak egy link, amely az eredeti fájlra mutat. A softlink olyan, mint egy parancsikon a fájlhoz. Ha eltávolítja a fájlt, a parancsikon használhatatlan.

Amint már tudja, ha eltávolítja a softlinket, az eredeti fájl továbbra is elérhető marad.

Javasolt olvasmány:

  • Hogyan listázza a Symlinkeket Linuxon
  • Hogyan keresse meg a törött Symlinkeket és törölje őket Linuxon

Kemény link létrehozása

Hozzon létre egy source nevű fájlt.fájlt az alábbiakban látható tartalommal.

$ echo "Welcome to OSTechNix" >source.file

Vizsgáljuk meg a fájl tartalmát.

$ cat source.fileWelcome to OSTechNix

a source.file most már létrejött.

Most hozzuk létre a hardlinket a source.file-hoz az alább látható módon.

$ ln source.file hardlink.file

Lásd a hardlink.file tartalmát.

$ cat hardlink.fileWelcome to OSTechNix

Láthatod, hogy a hardlink.file ugyanazokat az adatokat mutatja, mint a source.file.

Lássuk a hardlink.file és a source.file inode-ját és jogosultságait.

$ ls -lia

Mintakimenet:

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

Most látjuk, hogy a hardlink.file és a source.file inode-száma (11665692) és fájlengedélyei (-rw-r–r–r–) megegyeznek. Ezzel bebizonyosodott, hogy a hardlink fájl ugyanazzal az inodes számmal és engedélyekkel rendelkezik, mint az eredeti fájl.

Megjegyzés: Ha megváltoztatjuk a source.file engedélyeit, akkor ugyanez az engedély a hardlink.file-ra is érvényes lesz.

Most, távolítsuk el az eredeti fájlt (i.azaz a source.file-t), és nézzük meg, mi történik.

$ rm source.file

A hardlink.file tartalmának ellenőrzése a parancs segítségével:

$ cat hardlink.file

Mintakimenet:

Mint fentebb látható, még ha töröltem is a source fájlt, a hardlink.file tartalmát meg tudom tekinteni. Tehát bebizonyosodott, hogy a Hardlink osztozik az eredeti fájl inode számán, jogosultságain és adatain.

Szóval, mi a különbség a Hardlink és a normál másolt fájl között?

Elgondolkodhat azon, hogy miért hoznánk létre Hardlinket, amikor az eredeti fájlt könnyen másolhatjuk/beilleszthetjük? A hard link létrehozása egy fájlhoz más, mint a másolása.

Ha másolunk egy fájlt, akkor csak a tartalmat duplikáljuk. Tehát ha módosítod az egyik fájl tartalmát (akár az eredeti, akár a hardlink), annak nincs hatása a másikra. Ha azonban hard linket hozunk létre egy fájlhoz, és megváltoztatjuk bármelyik fájl tartalmát, a változás mindkét fájlban látható lesz.

Nézzük meg a source.file-t.

$ cat source.file Welcome to OSTechNix

A source fájlban egyetlen sorban ez áll: – Welcome to OSTechNix.

Tegyünk egy új sort, például “Welcome to Linux” a source.file-ban vagy a hardlink.file-ban.

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

Most ellenőrizzük mindkét fájl tartalmát.

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

See? A source.file-on az imént elvégzett módosítások mindkét fájlban frissülnek. Vagyis – mindkét fájl (forrás és hardlink) szinkronizálódik. Bármelyik fájlban végzett változtatás megjelenik a másikban is. Ha normálisan másolod/beilleszted a fájlt, nem fogod látni az új változtatásokat a másik fájlban.

A további részletekért nézd meg a man oldalakat.

$ man ln

Előre ennyi. Remélem, kaptál egy alapvető elképzelést a szimbolikus vagy lágy linkről és a kemény linkről.

Köszönjük, hogy benéztél!

Segítsen nekünk, hogy segítsünk Önnek:

  • Iratkozzon fel az e-mail hírlevelünkre : Iratkozzon fel most
  • Támogassa az OSTechNixet : Adományozzon PayPal-on keresztül
  • Töltsön le ingyenes e-könyveket és videókat : OSTechNix a TradePubon
  • Kapcsolódjon velünk: Reddit | Facebook | Twitter | LinkedIn | RSS feeds

Kellemes napot!!!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.