Vad är mjuk länk och hård länk i Linux?
En symbolisk eller mjuk länk är en faktisk länk till originalfilen, medan en hård länk är en spegelkopia av originalfilen. Om du raderar originalfilen har den mjuka länken inget värde, eftersom den pekar på en icke-existerande fil. Men när det gäller hårda länkar är det helt tvärtom. Även om du raderar originalfilen kommer hårdlänken fortfarande att ha data från originalfilen. Eftersom hårdlänken fungerar som en spegelkopia av originalfilen.
En mjuklänk
- kan korsa filsystemet,
- ger dig möjlighet att länka mellan kataloger,
- har ett annat inodnummer och andra filbehörigheter än originalfilen,
- behörigheterna uppdateras inte,
- har bara sökvägen till originalfilen, inte innehållet.
En hård länk
- kan inte korsa filsystemets gränser (i.dvs. en hårdlänk kan bara fungera i samma filsystem),
- kan inte länka kataloger,
- har samma inodnummer och behörigheter som originalfilen,
- behörigheterna uppdateras om vi ändrar behörigheterna för källfilen,
- har det faktiska innehållet i originalfilen, så att du fortfarande kan se innehållet, även om originalfilen har flyttats eller tagits bort.
Fattar du fortfarande inte? Låt mig visa dig några praktiska exempel.
Skapa mjuk länk eller symbolisk länk
Låt oss skapa en tom katalog som heter ”test”.
$ mkdir test
Byt till katalogen ”test”:
$ cd test
Skapa nu en ny fil som heter source.file med några data enligt nedan.
$ echo "Welcome to OSTechNix" >source.file
Låt oss titta på data i source.file.
$ cat source.fileWelcome to OSTechNix
Nja, source.fil har skapats.
Skapa nu en symbolisk eller mjuk länk till source.file.
Kör för att göra detta:
$ ln -s source.file softlink.file
Låt oss jämföra data från både source.file och softlink.file.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
Som du ser i ovanstående utdata visar softlink.file samma data som source.file.
Låt oss kontrollera inodes och behörigheter för softlink.file och source.file.
$ ls -lia
Exempel på utdata:
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
Som vi ser i skärmdumpen ovan är inodnumret (11665731 vs 11665692) och filbehörigheterna (lrwxrwxrwx vs -rw-r–r–) olika, trots att softlink.filen har samma innehåll som source.file, . Det är alltså bevisat att softlink inte har samma inodnummer och behörigheter som originalfilen.
Ta nu bort originalfilen (dvs. source.file) och se vad som händer.
$ rm source.file
Kontrollera innehållet i softlink.file med hjälp av kommandot:
$ cat softlink.file
Exempel på utdata:
cat: softlink.file: No such file or directory
Som du ser ovan finns det inte någon sådan fil eller katalog som heter softlink.file efter att vi tagit bort originalfilen (dvs. source.file). Så nu förstår vi att softlink bara är en länk som pekar på originalfilen. Softlink är som en genväg till en fil. Om du tar bort filen är genvägen värdelös.
Som du redan vet finns originalfilen fortfarande tillgänglig om du tar bort den mjuka länken.
Lästips:
- Hur man listar symlänkar i Linux
- Hur man hittar trasiga symlänkar och tar bort dem i Linux
Skapa hårdlänk
Skapa en fil som heter source.file med ett visst innehåll som visas nedan.
$ echo "Welcome to OSTechNix" >source.file
Låt oss kontrollera innehållet i filen.
$ cat source.fileWelcome to OSTechNix
source.file har skapats nu.
Nu ska vi skapa en hård länk till source.file enligt nedan.
$ ln source.file hardlink.file
Kontrollera innehållet i hardlink.file.
$ cat hardlink.fileWelcome to OSTechNix
Du ser att hardlink.file visar samma data som source.file.
Vi kontrollerar inodes och behörigheter för hardlink.file och source.file.
$ ls -lia
Exempel på utdata:
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
Nu ser vi att både hardlink.file och source.file har samma inodesnummer (11665692) och filbehörigheter (-rw-r–r–). Därmed är det bevisat att hardlink-filen har samma inodes-nummer och samma behörigheter som originalfilen.
Notera: Om vi ändrar behörigheterna för source.file kommer samma behörighet att tillämpas på hardlink.file också.
Nu tar vi bort originalfilen (i.e source.file) och se vad som händer.
$ rm source.file
Kontrollera innehållet i hardlink.file med hjälp av kommandot:
$ cat hardlink.file
Exempel på utdata:
Som du ser ovan, även om jag raderat källfilen, kan jag se innehållet i hardlink.file. Därmed är det bevisat att Hard link delar samma inodnummer, behörigheter och data som originalfilen.
Så, vad är skillnaden mellan Hard link och den vanliga kopierade filen?
Du kanske undrar varför vi skulle skapa en Hard link när vi enkelt kan kopiera/klistra in originalfilen? Att skapa en hårdlänk till en fil är något annat än att kopiera den.
Om du kopierar en fil kopieras bara innehållet. Så om du ändrar innehållet i en fil (antingen originalet eller hårdlänken) har det ingen effekt på den andra filen. Men om du skapar en hårdlänk till en fil och ändrar innehållet i någon av filerna kommer ändringen att synas på båda.
Låt oss ta en titt på källfilen.
$ cat source.file Welcome to OSTechNix
Källfilen har en enda rad där det står – Welcome to OSTechNix.
Föreslå en ny rad, till exempel ”Welcome to Linux” i source.file eller hardlink.file.
$ echo "Welcome to Linux" >>source.file
Kontrollera nu innehållet i båda filerna.
$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux
Se? De ändringar vi just gjort i source.file har uppdaterats i båda filerna. Vilket innebär att båda filerna (källfilen och hårda länken) synkroniseras. De ändringar du gör i någon av filerna kommer att återspeglas i den andra filen. Om du normalt kopierar/klistrar in filen kommer du inte att se några nya ändringar i den andra filen.
För mer information kan du läsa man-sidorna.
$ man ln
Det var allt för tillfället. Hoppas du fick en grundläggande uppfattning om symbolisk eller mjuk länk och hård länk.
Tack för att du tittade förbi!
Hjälp oss att hjälpa dig:
- Prenumerera på vårt nyhetsbrev via e-post : Registrera dig nu
- Stötta OSTechNix : Donera via PayPal
- Ladda ner gratis e-böcker och videoklipp : OSTechNix på TradePub
- Håll kontakt med oss: Reddit | Facebook | Twitter | LinkedIn | RSS-flöden
Har en bra dag!!