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

Lämna ett svar

Din e-postadress kommer inte publiceras.