Windows Vista - symlink, hardlink, junction
Windows Vista zavádí řadu pokročilých souborových a adresářových propojení nad NTFS, které jsou jinak běžně známé (desítky let) z NIXových systémů.
Zatímco dříve (na Windows XP a Windows 2000) se používala externí utilita junction pro propojení adresářů a symbolický odkaz na soubor byl možný jen ve formě netransparentního LNK odkazu, tak Vista se dodává s utilitou mklink, která umí vytvářet symbolické odkazy na adresáře a soubory, pevné odkazy na soubory a spojení adresářů.
Pevný odkaz neboli hardlink je vlastně více jmen pro jeden soubor; hardlink je tak nutně přímo svázán se zdrojovým souborem, pokud smažete hardlink, smaže se i zdrojový soubor, rovněž přístupová práva jsou pro všechny hardlinky identické.
Symbolický odkaz je pouze relativní ukazatel na soubor či adresář, jeho smazání nemá přitom na zdrojový soubor či adresář vliv.
Výhoda hardlinků je v jejich teoreticky mírně vyšší rychlosti, u symlinků zase můžete nazávisle nastavovat práva a atributy (například „Ke čtení“ či „Skrytý“).
Spojení adresáře (junction) je ve Windows Vista doplněno symbolickým odkazem na adresář, a doporučuji používat spíše /D
parametr než /J
.
Příkaz mklink má následující použití:
MKLINK [[/D] | [/H] | [/J]] Cíl Odkaz bez paremetrů Vytvoří symbolický odkaz na soubor. /D Vytvoří symbolický odkaz na adresář. /H Vytvoří pevný odkaz namísto symbolického odkazu. /J Vytvoří spojení adresáře. Odkaz Určuje název nového symbolického odkazu. Cíl Určuje cestu, na kterou nový odkaz odkazuje.
Použití v praxi:
V praxi si můžete vytvořit například takovouto adresářovou strukturu:
<SYMLINKD> bin32 [c:\Program Files (x86)] <SYMLINKD> bin64 [c:\Program Files] <DIR> cygwin <SYMLINKD> doc [c:\Users\rADo\Documents] <DIR> hry <SYMLINKD> img [c:\Users\rADo\Obrázky] <DIR> ins <SYMLINKD> snd [c:\Users\rADo\Hudba] <SYMLINKD> tmp [c:\Users\rADo\Downloads] <DIR> Users <SYMLINKD> vid [c:\Users\rADo\Videos] <DIR> web <DIR> Windows <SYMLINKD> work [c:\web\www]
Což znamená mimořádně snadný přístup k souborům bez narušení struktury adresářů Windows, naopak s jejich využitím:
Úžasné na tomto konceptu je fakt, že pokud něco ukládáte například z Průzkumníka do dokumentů (c:\Users\rADo\Documents
), máte pro to snadný přístup v c:\doc
, a podobně.
rADo, měl bych spíš problém :-) Upravil jsem si přes nějakou utilitku ikony složek typu Dokumenty a nyní mi Windows a hromada aplikací bere defaultně namíst c:/user/jmeno/dokumenty => C:\Users\Patrik\Links(205)\Documents.
nevíš, co to může znamenat, popřípadě kde ve Windows nastavit defaultní cestu k dokumentům?
[1] ty defaultní cesty umí změnit třeba TuneUp Utilities, kde jsou v registrech ale nevím.
Jestli se nemýlím, tak smazáním hardlinku se soubor na disku nesmaže, ale stane se tak až se smazáním posledního hardlinku.
Také je škoda, že na mklink i na systémové volání je potřeba zvednout oprávnění.
[1] Kdyz kliknes pravym na slozku s dokumentama, ktera je nastavena pro ty dokumenty (to Links(neco)), tak je na jedny zalozce volba presunout, nebo umisteni - staci to zmenit. Nebo tu slozku staci presunout ci prejmenovat a Vista si to sama zmeni. V nejhorsim pripade to pak najdes v registru, dej vyhledat nazev ty slozky (muze tam byt i %userprofile% misto C:\Users\Uzivatel, tak hledej i s tim. Melo by to byt v nejakem klici ShellFolders nebo tak neco.
[1] Tak konkretne je to v HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ Shell Folders
Radku, jestli muzes, tak ty komentare spoj, at ti to tu nedela bordel.
Jak je vyřešeno skrytí nepotřebných adresářů - třeba "Program Files"? Přes nezobrazování skrytých souborů a adresářů nebo existuje nějaké lepší řešení?
Neúspěšně se pokouším přemapovat Program files z Céčka na Déčko. Prosím poraďte.
Chapu dobre, ze hardlink by mel vytvorit neco jako stalou kopii souboru a udrzovat obousmerne oba soubory stejny?
Muzete se mrknout na video, kde se stala chyba? Pripadne jak toho mam docilit jinak?
http://www.screencast.com/t/dVVzGNBp...
Koukám, že Windows 7 konečně dohnali Unixy v oblasti odkazů ([hard|soft]links).
[8] Funguje-li to stejně jako na Unixech, tak je to u hardlink tak, že jeden a ten samý soubor má více záznamů v souborovém systému. Čili fyzicky je to stále ten samý soubor, ale je vidět ve více adresářích (patří do více adresářů), a dokud se nezmažou všechny hardlinky, pak ten soubor stále existuje.
[10] Hardlink je pouze odkaz na soubor, ale je s ním pevně svázán. Při smazání hardlinku (posledního se všech hardlinků, které na daný soubor byly vytvořeny) se soubor z disku nesmaže, pouze se uvolní místo na disku pro případný další zápis (soubor pak může být kdykoli přepsán, pokud je třeba na disk něco zapsat).