Windows juhend: Kuidas luua ja kasutada sümboolseid viiteid NTFS failisüsteemis

From ICO wiki
Revision as of 19:38, 11 October 2012 by Mamolvog (talk | contribs)
Jump to navigationJump to search

Ülevaade

Mis on sümboolne viide?

Sümboolne viide (ka symlink või soft link) on eritüüpi fail, mis osutab mõnele teisele failile või kataloogile, moodustades nende vahel viite, mis otseselt ei eksisteeri, aga töötab nagu ei oleks failisüsteemis midagi muudetud [1]. Selliseid viiteid on ainult võimalik moodustada NTFS failisüsteemis (ka uues failisüsteemis ReFS (Resilient File System) on sümboolsete viidete loomine võimalik) [2]. Viited ilmuvad nagu tavalised failid või kaustad ning neid on võimalik kasutada samal moel, nii kasutajate kui ka rakenduste poolt. NTFS failisüsteemis on võimalik moodustada kolme erinevat tüüpi viidet, igaühel omad võimalused: hard link, junction point ja symlink.

Hard link: Võimaldab luua viiteid ainult failide vahel, mis asuvad samal kettal. Viide ei murdu kui viidatava asukoht muutub.
Junction point: Võimaldab luua viiteid ainult kaustade vahel, mis asuvad lokaalsetel NTFS ketastel. Viide murdub kui viidatava asukoht muutub.
Symlink: Võimaldab luua viiteid nii kaustade kui ka failide vahel. Symlinki eripära seisneb selles, et kasutada võib ka võrku, kuid viide murdub kui viidatava asukoht muutub.

Neist kõige uuem on Symlink, mis tuli koos Windows Vista poolt toodud uuendustega NTFS failisüsteemis ning seetõttu on selle kasutus piiratud ainult Windows Vista või uuemate Windows operatsioonisüsteemidel. [3]

Kuidas see ikkagi toimib?

Kõige kergem on neid erilisi viiteid seletada tavalise otsetee (shortcut) näitel. Kui me moodustame otsetee mõnest kaustast, siis kausta asukohaks jääb see, kus see kaust tegelikult asub. Näiteks:
Otsetee Otse.lnk asub C:\Users\Mauri\Desktop, aga näitab aadressiribalt asukohta E:\Proovikaust\Viide.
Otsetee on dünaamiline, võime muuta tema asukohta ja viide ei murdu, ning saame muuta ka viidatud kausta asukohta ja viide nende vahel on ikka olemas.
Sümboolne viide kahjuks nii dünaamiline ei ole, aga selle kasutamisel on omad plussid. Näiteks, on võimalik terve Program Files kaust liigutada kuhugi mujale, ilma, et midagi meie failisüsteemis katki läheks. Toon siin kiire näite:
Liigutan näiteks C:\Program Files kausta mälupulgale ning muudan kausta nime ära F:\Test (siinkohal peab märkima, et kõik programmid, mis selles kaustas hetkel töötavad, peab enne sulgema, et faile saaks teisaldada). Seejärel moodustan sümboolse viite ja ütlen, et moodustuks viide C:\Program Files, mis viitaks mälupulgal olevale Test kaustale.
Viide näeb sarnaselt välja otseteega, aga avades kausta, võime aadressiribalt näha, et viidet nagu ei olekski toimunud (meile näidatakse aadressi C:\Program Files), aga kaust ise eksisteerib ainult mälupulgal (aadressil F:\Test). Kõik muudatused, mis ma nüüd teen, tehakse tegelikult mälupulgale, aga failisüsteemis öeldakse, et muudatused on tehtud C:\Program Files kaustas. See tagab, et kõik rakendused, mis mul Program Files kaustas olid, ei tea, et midagi oleks muutunud ja töötavad edasi nagu ette nähtud. Muudatusi võib ka teha otse mälupulgale, peaasi, et viidet kuidagi ei murta. Probleemid tekivad alles siis, kui ma mälupulga arvutist eemaldan või mõnel muul moel viite katki teen.

Milleks sümboolseid viiteid kasutada?

Sümboolsetele viidetele leidub erinevaid kasutusviise. Nimetan siinkohal mõned, millega olen ise kokku puutunud, aga kindlasti leidub neid veel, vastavalt kellegi vajadustele/soovidele.

Võib-olla kõige esimesena tuleb ette kettaruum, eriti SSD (Solid State Drive) puhul, kus kettaruum on mõnevõrra rohkem piiratud võrreldes kõvaketastega (kõrge hinna/mahu suhe). Selleasemel, et kohe asju kustutama hakata, on sümboolse viite abil võimalik ruumi juurde saada lihtsalt asju paigutades teistele ketastele ja/või mälupulkadele, jättes kõik ilusti töökorda. Säästab vaeva, et eemaldada programm ühelt kettalt, et ta siis teisele kettale uuesti installeerida. Lihtsalt programmide tõstmisega (lõika/kleebi meetod) ühelt kettalt teisele võib juhtuda, et Windowsi registris läheb midagi katki ja programm ei soovi enam uues asukohas korrektselt töötada.

Samuti on olemas hunnik rakendusi ja aplikatsioone, mis soovivad kindlasti, et nad oleksid installeeritud just teatud asukohta ning ei lase seda lihtkasutajal muuta. Sümboolne viide tõttab appi. Saame muuta praktiliselt ükskõik mille asukohta. Näiteks paigutavad paljud arvutimängud oma mängu salvestused ja muud konfiguratsiooni failid vaikimisi kasutaja dokumentides asuvasse My Games kausta. Kasutajalt selle asukohta ei küsita ning muuta ka ei lasta, sest sellest on saanud nii-öelda standard. Ajapikku võib sinna koguneda väga suur kogus andmeid ning sümboolse viite abil võime selle paigutada ükskõik millisele kettale, kasvõi võrku.

Kui arvutimängudest juba juttu tuli, siis kindlasti paljud mängusõbrad teavad sellist mänguplatvormi nagu Steam. Steam on juba tegutsenud alates 2003. aastast ning selle suurimaks probleemiks on siiani tema ülesehitus. Kasutajal on võimalus valida, kuhu Steam installeeritakse, aga see, kuhu Steami kaudu installeeritud mängud pannakse, seda ei ole võimalik muuta. Kõik peavad olema Steami alamkaustas steamapps, muul viisil ei oska Steam nendega midagi peale hakata. Olenevalt kellegi mänguisust võib see kaust väga suureks kujuneda (väga mahukad ja palju silmailu pakkuvad mängud võivad võtta kuni 20 GB kettaruumi). Probleeme tekib ka siis, kui Steam on SSD peal ja järsku avastatakse, et terve kettaruum on juba ammendatud. Sümboolse viitega saame mänge erinevatele ketastele jaotada ning Steam leiab mängud ilusti üles, kuna talle öeldakse, et need asuvad ikka tema alamkaustas.

Peale üheksat aastat on Steam endale selle funktsionaalsuse ka lisanud ning praegustel andmetel on võimalik mängude installeerimise asukohta muuta ainult Steami beta versiooniga, läbi paari konsooli koodi. [4]

Piirangud

Eelpool mainisin iga viite kohta failisüsteemis olevaid piiranguid, kuid on olemas ka teisi piiranguid.

Kuna viitamisel on vaja enne viidatav ümber paigutada, siis ei ole võimalik hetkel töötavaid rakendusi viidata. See piirang peaks olema iseenesest mõistetav.

Alglaadimise ajal sümboolsed viited ei toimi, mistõttu ei ole võimalik oma operatsioonisüsteemi käivitamiseks vajalikke faile ümber suunata. Kindlasti leidub faile ja kaustu, mida on võimalik ümber suunata, aga isiklikult jätaksin kindluse mõttes Windowsi kausta ja kõik sinna kuuluva sinnapaika. Muude kaustadega, nagu Users ja Program Files, ei tohiks probleeme tekkida. [5]

Kuidas luua sümboolseid viiteid?

Süntaks

Sümboolseid viiteid saab luua käsurealt väga lihtsa käsuga. [6]

mklink [[/D] | [/H] | [/J]] Link Target 
  • /D - Loob symlink tüüpi viite.
  • /H - Loob hard link tüüpi viite.
  • /J - Loob junction point tüüpi viite.
  • Link - Asukoht, mis hakkab viitama.
  • Target - Asukoht, kuhu viidatakse.

Kuna Link ja Target vahele käib süntaksi kohapealt tühik, siis esialgu tekib probleeme failide või kaustadega, mille nimes on tühik. Selle vältimiseks tuleb antud viite asukoht jutumärkidega ümbritseda.

Viiteid võib kustutada läbi exploreri käsitsi, peaasi, et kustutatakse viide, mitte viite asukoht. Samuti võib selleks kasutada käsurea käske, mis sobivad ka tavaliste failide ja kaustade kustutamiseks.

  • Failide vaheliste viidete kustutamiseks:
del Link
  • Kataloogide vaheliste viidete kustutamiseks:
rmdir Link

Näide

Näites kasutan symlink viidet, et installeeritud WinRAR võrgu kaudu tööle saada.

Installeeritud WinRAR asub praegu C:\Program Files\WinRAR kaustas. Lõikan kausta ning kleebin selle võrgus olevasse kausta \\LENOVO\Mauri.
Kuna viidatava kausta nimi ei ole oluline, siis asendan selle nimega Kaust.

Kontrollin, et WinRAR kuidagi muudmoodi ei töötaks. Selleks avan ühe suvalise .rar faili.

Näen, et WinRARi ei leita üles, kuna see ei eksisteeri enam vanal kohal.
Järgmisena avan käsurea, cmd, administraatori õigustega.
Sisestan käsu:

mklink /D "C:\Program Files\WinRAR" \\LENOVO\Mauri\Kaust

Viite nimega kaust (praegusel juhul WinRAR) ei tohi enne viite tegemist Program Files kaustas eksisteerida, muidu ei lasta viidet luua.

Saan teate, et sümboolse viite loomine õnnestus ning näen asukohti, mille vahel viide loodi.
Liigun Program Files kausta, et näha milline viide välja näeb.

Tõepoolest, nagu oleks tegu otseteega, aga kui me vaatame, millisel aadressil kaust asub, näidatakse asukohaks C:\Program Files\WinRAR.

Kausta tegelik asukoht on \\LENOVO\Mauri\Kaust.
Avan suvalise .rar faili, veendudes, et kõik toimib.

Viite kustutamiseks sisestan käsu:

rmdir "C:\Program Files\WinRAR"

Viide kustutatakse ning WinRAR lakkab taaskord töötamast.

Kasutatud kirjandus

  1. http://msdn.microsoft.com/en-us/library/aa365680%28v=vs.85%29.aspx
  2. http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx
  3. http://technet.microsoft.com/en-gb/magazine/2007.02.vistakernel.aspx
  4. http://en.wikipedia.org/wiki/NTFS_symbolic_link
  5. http://blogs.msdn.com/b/b8/archive/2012/01/16/building-the-next-generation-file-system-for-windows-refs.aspx