Mikä on pehmeä linkki ja kova linkki Linuxissa?
Symbolinen tai pehmeä linkki on varsinainen linkki alkuperäiseen tiedostoon, kun taas kova linkki on peilikopio alkuperäisestä tiedostosta. Jos poistat alkuperäisen tiedoston, pehmeällä linkillä ei ole mitään arvoa, koska se osoittaa olemattomaan tiedostoon. Kovan linkin tapauksessa tilanne on täysin päinvastainen. Vaikka poistaisit alkuperäisen tiedoston, kovassa linkissä on edelleen alkuperäisen tiedoston tiedot. Koska kova linkki toimii alkuperäisen tiedoston peilikopiona.
Lyhyesti sanottuna pehmeä linkki
- voi ylittää tiedostojärjestelmän,
- mahdollistaa linkityksen hakemistojen välillä,
- on erilainen inode-numero ja eri tiedostojen käyttöoikeudet kuin alkuperäisessä tiedostossa,
- käyttöoikeuksia ei päivitetä
- on vain alkuperäisen tiedoston polku, mutta ei sisältö.
Kova linkki
- ei voi ylittää tiedostojärjestelmän rajoja (i.e. Hardlink voi toimia vain samassa tiedostojärjestelmässä),
- ei voi linkittää hakemistoja,
- on sama inode-numero ja samat käyttöoikeudet kuin alkuperäisessä tiedostossa,
- käyttöoikeudet päivittyvät, jos muutamme lähdetiedoston käyttöoikeuksia,
- on sama kuin alkuperäisen tiedoston varsinainen sisältö, joten voit edelleen tarkastella sisältöä, vaikka alkuperäinen tiedosto siirrettäisiin tai poistettaisiin.
Etkö vieläkään tajua? No, anna minun näyttää sinulle muutamia käytännön esimerkkejä.
Pehmeän linkin tai symbolisen linkin luominen
Luotaan tyhjä hakemisto nimeltä ”test”.
$ mkdir test
Vaihdetaan hakemistoon ”test”:
$ cd test
Luotaan nyt uusi tiedosto nimeltä source.file, jossa on joitain tietoja alla esitetyllä tavalla.
$ echo "Welcome to OSTechNix" >source.file
Katsellaanpa source.file:n tietoja.
$ cat source.fileWelcome to OSTechNix
No, source.tiedosto on luotu.
Luo nyt symbolinen tai pehmeä linkki source.file.
Tehdäksesi niin, suorita:
$ ln -s source.file softlink.file
Vertaillaan sekä source.file:n että softlinkin tietoja.file.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
Kuten yllä olevasta tulosteesta näkyy, softlink.file näyttää samat tiedot kuin source.file.
Tarkistetaanpa softlinkin inodes- ja käyttöoikeudet.file ja source.file.
$ ls -lia
Esimerkki tulosteesta:
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
Kuten yllä olevasta kuvakaappauksesta näemme, inode-numero (11665731 vs. 11665692) ja tiedostojen käyttöoikeudet (lrwxrwxrwx vs. -rw-r–r–) ovat erilaiset, vaikkakin softlink.Tiedoston sisältö on sama kuin source.file, . Näin ollen on todistettu, että pehmolinkillä ei ole samaa inode-numeroa ja samoja käyttöoikeuksia kuin alkuperäisellä tiedostolla.
Poista nyt alkuperäinen tiedosto (eli source.file) ja katso, mitä tapahtuu.
$ rm source.file
Tarkista softlink.tiedoston sisältö komennolla:
$ cat softlink.file
Esimerkki tulosteesta:
cat: softlink.file: No such file or directory
Kuten yllä näkyy, ei ole olemassa sellaista tiedostoa tai hakemistoa nimeltä softa.file sen jälkeen, kun olimme poistaneet alkuperäistiedoston (eli source.file). Ymmärrämme siis nyt, että pehmolinkki on vain linkki, joka osoittaa alkuperäiseen tiedostoon. Pehmolinkki on kuin pikakuvake tiedostoon. Jos poistat tiedoston, oikotie on hyödytön.
Kuten jo tiedät, jos poistat pehmolinkin, alkuperäinen tiedosto on edelleen käytettävissä.
Lukuehdotus:
- How To List To Symlinks On Linux
- How To Find Broken Symlinks And Delete Them On Linux
Kovan linkin luominen
Luo tiedosto nimeltä source.tiedosto, jonka sisältö on esitetty alla.
$ echo "Welcome to OSTechNix" >source.file
Varmennetaan tiedoston sisältö.
$ cat source.fileWelcome to OSTechNix
source.file on nyt luotu.
Luotaan nyt kova linkki source.file-tiedostoon alla esitetyllä tavalla.
$ ln source.file hardlink.file
Tarkistetaan hardlink.file-tiedoston sisältö.
$ cat hardlink.fileWelcome to OSTechNix
Näet, että hardlink.file näyttää samoja tietoja kuin source.file.
Tarkistetaan hardlink.file:n ja source.file:n inode- ja käyttöoikeudet.
$ ls -lia
Esimerkki tulosteesta:
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
Nyt näemme, että sekä hardlink.file:lla että source.file:lla on sama inode-numero (11665692) ja tiedostojen käyttöoikeudet (-rw-r-r–r–). Näin ollen on todistettu, että kovalinkkitiedostolla on sama inodes-numero ja samat käyttöoikeudet kuin alkuperäisellä tiedostolla.
Huomautus: Jos muutamme source.file-tiedoston käyttöoikeuksia, samaa käyttöoikeutta sovelletaan myös kovalinkkitiedostoon.file.
Poistetaan nyt alkuperäinen tiedosto (i.e source.file) ja katso, mitä tapahtuu.
$ rm source.file
Tarkista hardlink.file-tiedoston sisältö komennolla:
$ cat hardlink.file
Esimerkki tulosteesta:
Kuten yllä näkyy, vaikka poistin source-tiedoston, voin tarkastella hardlink.file-tiedoston sisältöä. Näin ollen on todistettu, että Hard-linkillä on sama inode-numero, samat käyttöoikeudet ja tiedot kuin alkuperäisellä tiedostolla.
Miten Hard-linkki eroaa tavallisesta kopioidusta tiedostosta?
Voit ehkä ihmetellä, miksi luomme Hard-linkin, kun voimme helposti kopioida/liittää alkuperäisen tiedoston? Kovan linkin luominen tiedostoon on eri asia kuin sen kopiointi.
Jos kopioit tiedoston, se vain kopioi sen sisällön. Jos siis muutat yhden tiedoston (joko alkuperäisen tai hard linkin) sisältöä, sillä ei ole vaikutusta toiseen tiedostoon. Jos kuitenkin luot kovan linkin tiedostoon ja muutat jommankumman tiedoston sisältöä, muutos näkyy molemmissa.
Katsotaanpa lähde.tiedostoa.
$ cat source.file Welcome to OSTechNix
Lähdetiedostossa on yksi rivi, jossa lukee – Welcome to OSTechNix.
Lisää uusi rivi, esimerkiksi ”Tervetuloa Linuxiin” source.fileen tai hardlink.fileen.
$ echo "Welcome to Linux" >>source.file
Tarkista nyt molempien tiedostojen sisältö.
$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux
Katso? Juuri tekemämme muutokset source.file-tiedostossa päivittyvät molempiin tiedostoihin. Tarkoittaen – molemmat tiedostot (lähde ja kiintolinkki) synkronoituvat. Mitä tahansa muutoksia teetkin jossakin tiedostossa, ne heijastuvat myös toiseen tiedostoon. Jos kopioit/liität tiedoston normaalisti, et näe mitään uusia muutoksia toisessa tiedostossa.
Lisätietoa saat man-sivuilta.
$ man ln
Tässä kaikki toistaiseksi. Toivottavasti sait peruskäsityksen symbolisesta tai pehmeästä linkistä ja kovasta linkistä.
Kiitos, kun piipahdit!
Auta meitä auttamaan sinua:
- Tilaa sähköpostiuutiskirjeemme : Rekisteröidy nyt
- Tue OSTechNixiä : Lahjoita PayPalin kautta
- Lataa ilmaisia e-kirjoja ja videoita : OSTechNix on TradePub
- Yhdistäydy meihin: Reddit | Facebook | Twitter | LinkedIn | RSS-syötteet
Hyvää päivänjatkoa!!