10. maj, 2017 – 5 min read

Hej der igen. I denne introduktion til hårde links og symbolske links vil vi først forsøge at lære og definere, hvad de hver især betyder. Derefter vil vi diskutere, hvad forskellene mellem de to er.

Så hvad er et hard link, og hvad gør det præcist i shell’en?

Et hard link er blot et ekstra navn til en eksisterende fil på Linux eller andre Unix-lignende operativsystemer.

Der kan oprettes et vilkårligt antal hard links, og dermed et vilkårligt antal navne, til en hvilken som helst fil. Der kan også oprettes hardlinks til andre hardlinks. De kan dog ikke oprettes til mapper, og de kan ikke krydse filsystemgrænser eller gå på tværs af partitioner.

Den måske mest nyttige anvendelse af hardlinks er at gøre det muligt at få let adgang til filer, programmer og scripts (dvs. korte programmer) i en anden mappe end den oprindelige fil eller den eksekverbare fil (dvs. den køreklare version af et program). Ved at skrive navnet på hardlinket vil programmet eller scriptet blive udført på samme måde som ved at bruge dets oprindelige navn. (http://www.linfo.org/hard_link.html)

Vil du læse denne historie senere? Gem den i Journal.

Så hvad betyder denne definition egentlig? Jo, du kan oprette et hardlink til en eksisterende fil ved at bruge kommandoen ln file_name hardlink. Jeg har givet et eksempel nedenfor på oprettelse af et hardlink i praksis. I eksemplet nedenfor har jeg oprettet et hardlink aka en genvej til filen med navnet file1 med hardlinket hlink1.

Nu lader ls -i. Så at den opregner alle filer med inode.

INODE Definition: Inode er en datastruktur i et filsystem i Unix-stil, som beskriver et filsystemobjekt som f.eks. en fil eller en mappe. Hver inode gemmer attributterne og diskblokplacering(er) for objektets data. Filsystemobjektets attributter kan omfatte metadata (tidspunkt for sidste ændring, adgang, modifikation) samt ejer- og tilladelsesdata.

Directories er lister med navne, der er tildelt inodes. En mappe indeholder en post for sig selv, sin forælder og hver af sine børn. (https://en.wikipedia.org/wiki/Inode)

Hvis du kigger på file1 og hlink1 kan du se, at inoden på venstre side er den samme. I det væsentlige fungerer hardlinks som en genvej til den fil, der er hardlinket.

Nu går vi videre til “Soft Links”

Soft links er en særlig form for fil, der peger på en anden fil, ligesom en genvej. I modsætning til et hard link indeholder et symbolsk link ikke dataene i målfilen. Det peger blot på en anden post et sted i filsystemet. Denne forskel giver symbolske links visse kvaliteter, som hårde links ikke har, f.eks. muligheden for at linke til mapper eller til filer på fjerncomputere i netværk via NFS. Når du sletter en målfil, bliver symbolske links til den pågældende fil også ubrugelige, hvorimod hårde links bevarer filens indhold. (https://kb.iu.edu/d/abbe)

Nu skal vi oprette et blødt link til sammenligning med det hårde link, som vi oprettede ovenfor.

Så lad os åbne en terminal. Gå til finder eller søg og indtast terminal det skulle poppe op klik på det og åben.

For vores eksempel lad os først oprette en fil. Hvis vi skriver touch example1 trykker vi på enter. Vi kan oprette en fil. Nu skal vi oprette softlinket.

Hvis vi skriver i shell ln -s example1 softlink1 opretter vi et softlink mellem filerne. Se eksemplet nedenfor.

softlink

Hvis vi nu skulle skrive ls -i vil vi også bemærke, at kun hardlink filen har samme inode som hardlinket, mens softlink filen har forskellige inodes.

hvad er forskellene mellem hard- og softlinks?

Et softlink indeholder ikke dataene i målfilen.

Et blødt link peger på en anden post et sted i filsystemet.

Et blødt link har mulighed for at linke til mapper eller til filer på fjerncomputere i netværk via NFS.

Sletning af en målfil for et symbolsk link gør linket ubrugeligt.

Et hardlink bevarer indholdet af filen.

Et hardlink kan ikke oprettes til mapper, og de kan ikke krydse filsystemgrænser eller spænde over partitioner.

I et hardlink kan du bruge et hvilket som helst af de oprettede hardlink-navne til at udføre et program eller script på samme måde som det oprindelige navn, der er givet.

I det væsentlige:

“Under filsystemet repræsenteres filer af inoder

En fil i filsystemet er grundlæggende et link til en inode.
Et hardlink skaber så bare en anden fil med et link til den samme underliggende inode.

Når du sletter en fil, fjerner du et link til den underliggende inode. Inoden er først slettet (eller kan slettes/overskrives), når alle links til inoden er blevet slettet.

Et symbolsk link er et link til et andet navn i filsystemet.

Når der er lavet et hard link, er linket til inoden. sletning, omdøbning eller flytning af den oprindelige fil vil ikke påvirke hard linket, da det linker til den underliggende inode. Enhver ændring af dataene på inoden afspejles i alle filer, der henviser til den pågældende inode.

Bemærk: Hardlinks er kun gyldige inden for det samme filsystem. Symbolske links kan gå på tværs af filsystemer, da de blot er navnet på en anden fil.”

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

Undersøgelse af Shell og hvordan den udfører en kommando

  • Shell’en læser sit input fra en fil, fra en streng eller fra brugerens terminal.
  • Input opdeles i ord og operatorer, der adlyder citationstegnsreglerne. Disse tokens er adskilt af metakendetegn. Alias-ekspansion udføres.
  • Shell’en parserer (analyserer og substituerer) tokens til simple og sammensatte kommandoer.
  • Shell’en udfører forskellige shell-ekspansioner og opdeler de ekspanderede tokens i lister over filnavne og kommandoer og argumenter.
  • Omdirigeringen udføres om nødvendigt, omdirigeringsoperatorer og deres operander fjernes fra argumentlisten.
  • Kommandoer udføres.
  • Optionelt venter shell’en på, at kommandoen afsluttes, og opsamler dens exitstatus.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.