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!!!