10 maj, 2017 – 5 min read

Hej där igen. I den här introduktionen till hårda länkar och symboliska länkar ska vi först försöka lära oss och definiera vad de båda betyder. Sedan kommer vi att diskutera vad skillnaderna mellan de två är.

Vad är en hård länk och vad exakt gör den i skalet?

En hård länk är bara ett ytterligare namn för en befintlig fil i Linux eller andra Unix-liknande operativsystem.

Vilket antal hårda länkar, och därmed vilket antal namn som helst, kan skapas för vilken fil som helst. Hårda länkar kan också skapas till andra hårda länkar. De kan dock inte skapas för kataloger, och de kan inte korsa filsystemgränser eller sträcka sig över partitioner.

Det kanske mest användbara användningsområdet för hårda länkar är att göra det möjligt att enkelt komma åt filer, program och skript (dvs. korta program) i en annan katalog än originalfilen eller den körbara filen (dvs. den körklara versionen av ett program). Om du skriver namnet på hårdlänken kommer programmet eller skriptet att exekveras på samma sätt som om du använder dess ursprungliga namn. (http://www.linfo.org/hard_link.html)

Vill du läsa den här historien senare? Spara den i Journal.

Vad betyder den här definitionen egentligen? Jo, du kan skapa en hårdlänk till en befintlig fil genom att använda kommandot ln file_name hardlink. Jag har gett ett exempel nedan på hur man skapar en hårdlänk i praktiken. I exemplet nedan skapade jag en hårdlänk aka en genväg till filen file1 med namnet hlink1.

Nu kan vi ls -i. Så att den listar alla filer med inode.

INODE Definition: Inode är en datastruktur i ett filsystem av Unix-typ som beskriver ett filsystemobjekt, t.ex. en fil eller en katalog. Varje inode lagrar attributen och diskblockets plats(er) för objektets data. Filsystemobjektets attribut kan innehålla metadata (tidpunkter för senaste ändring, åtkomst, modifiering) samt ägar- och behörighetsdata.

Adresser är listor med namn som tilldelats inoder. En katalog innehåller en post för sig själv, sin överordnade och alla sina barn. (https://en.wikipedia.org/wiki/Inode)

Om du tittar på file1 och hlink1 kan du se att inoden på vänster sida är densamma. I huvudsak fungerar hardlinks som en genväg till den fil som är hardlinkad.

Nu går vi vidare till ”Soft Links”

Soft links är en speciell typ av fil som pekar på en annan fil, ungefär som en genväg. Till skillnad från en hård länk innehåller en symbolisk länk inte data i målfilen. Den pekar helt enkelt på en annan post någonstans i filsystemet. Denna skillnad ger symboliska länkar vissa egenskaper som hårda länkar inte har, t.ex. möjligheten att länka till kataloger eller till filer på fjärrdatorer i nätverk via NFS. När du raderar en målfil blir symboliska länkar till den filen oanvändbara, medan hårda länkar behåller filens innehåll. (https://kb.iu.edu/d/abbe)

Nu ska vi skapa en mjuk länk för att jämföra med den hårda länken vi skapade ovan.

Så låt oss öppna en terminal. Gå till sökaren eller sök och skriv in terminal det borde dyka upp klicka på den och öppna.

För vårt exempel låt oss först skapa en fil. Om vi skriver touch example1 tryck på enter. Vi kan skapa en fil. Nu ska vi skapa den mjuka länken.

Om vi skriver i skalet ln -s example1 softlink1 skapar vi en mjuk länk mellan filerna. Se exemplet nedan.

softlink

Om vi nu skulle skriva ls -i så kommer vi också att märka att det bara är filen med hårdlänken som har samma inode som den hårda länken, medan filen med den mjuka länken har olika inodes.

Vad är skillnaderna mellan hårda och mjuka länkar?

En mjuk länk innehåller inte data i målfilen.

En mjuk länk pekar på en annan post någonstans i filsystemet.

En mjuk länk har möjlighet att länka till kataloger eller till filer på fjärrdatorer i nätverk via NFS.

Ledning av en målfil för en symbolisk länk gör länken oanvändbar.

En hård länk bevarar filens innehåll.

En hård länk kan inte skapas för kataloger, och de kan inte korsa filsystemgränser eller sträcka sig över partitioner.

I en hård länk kan du använda något av de skapade namnen på den hårda länken för att utföra ett program eller skript på samma sätt som det ursprungliga namnet som gavs.

I huvudsak:

”Under filsystemet representeras filerna av inoder

En fil i filsystemet är i princip en länk till en inod.
En hårdlänk skapar då bara en annan fil med en länk till samma underliggande inod.

När du raderar en fil tar du bort en länk till den underliggande inoden. Inoden raderas (eller kan raderas/överskrivas) först när alla länkar till inoden har raderats.

En symbolisk länk är en länk till ett annat namn i filsystemet.

När en hårdlänk har skapats är länken till inoden.

När en hårdlänk har skapats är länken till inoden.

Raderar man originalfilen, byter man namn eller flyttar den, så kommer det inte att påverka hårdlänken eftersom den länkar till den underliggande inoden. Alla ändringar av data i inoden återspeglas i alla filer som hänvisar till den inoden.

Anmärkning: Hårda länkar är endast giltiga inom samma filsystem. Symboliska länkar kan sträcka sig över filsystem eftersom de helt enkelt är namnet på en annan fil.”

(http://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link)

Undersökning av skalet och hur det utför ett kommando

  • Shellet läser sin inmatning från en fil, en sträng eller från användarens terminal.
  • Inmatningen bryts upp i ord och operatorer, som följer reglerna för citering. Dessa tokens separeras av metatecken. Alias-expansion utförs.
  • Shellen parserar (analyserar och ersätter) tokenerna till enkla och sammansatta kommandon.
  • Shellen utför olika skalexpansioner och delar upp de expanderade tokenerna till listor med filnamn och kommandon och argument.
  • Omdirigering utförs vid behov, omdirigeringsoperatorer och deras operander tas bort från argumentlistan.
  • Kommandon exekveras.
  • Optionellt väntar skalet på att kommandot ska slutföras och samlar in sin exitstatus.

.

Lämna ett svar

Din e-postadress kommer inte publiceras.