sobota 20. prosince 2008

Windows Vista hardlinks - luxusní záloha vašich souborů

vistalogosound V uplynulém týdnu jsem se zúčastnil speciálního školení v počítačové škole Gopas na téma "Windows Vista - implementace a podpora". Dozvěděl jsem se o spoustě zajímavých a především užitečných funkcích a vlastnostech tohoto operačního systému a jelikož řada z nich se může hodit nejen IT profesionálům, ale i zcela běžným uživatelům, rozhodl jsem se s vámi o některé z nich podělit.

Dnes vás tedy seznámím s velmi šikovnou vlastností Vist, schopností vytvářet vedle standardních zástupců také speciální typ zástupce, tzv. hardlink, nebo chcete-li česky pevný odkaz. K čemu je to dobré?

Určitě máte na svých pevných discích desítky, možná stovky důležitých souborů, o které byste rozhodně nechtěli přijít. Šance, že si takové soubory, pokud je nechtěně smažete i z koše, obnovíte, je poměrně malá, pokud data byla fyzicky přepsána již jinými soubory. Ostatně o obnově takto smazaných dat pomocí šikovného programu "Recuva" jsem psal již zde. Pokud jste averzní vůči riziku aspoň tak jako já, určitě byste nebyli příliš nadšeni z toho, že takto smazaný soubor by nešel obnovit, anebo by byl obnoven jen částečně s chybami. V tom případě potřebujete nějakou pojistku, že o nechtěně smazaná data nepřijdete a můžete si je obnovit kdykoli, a to ve 100% kvalitě původního souboru.

Není třeba hledat nějaká drahá SW řešení, můžete využít novou schopnost Windows Vista, a to, že si na daný soubor (dokument MS Office, *.exe soubory, soubory s nastavením určitých programů... apod.) vytvoříte hardlink. Stačí zkousnout pár jednoduchých příkazů v příkazové řádce a je to. Podívejte se na následující příklad:

  • ve složce Dokumenty vytvořím "důležitý" dokument s názvem "diplomova_prace.txt" a doplním alespoň krátký text pro pozdější ověření funkčnosti hardlinku (v mém případě jde tedy o cestu C:\Users\Vojta\Documents)
  • na ploše chci mít zástupce na tento soubor, nazvaný jako "diplomka" (u mě tedy C:\Users\Vojta\Desktop)

Zástupce vytvoříme snadno - buďto standardním postupem (např. přetažením souboru "diplomova_prace.txt" pomocí myši při současném stisku pravého tlačítka myši, kdy z kontextového menu poté zvolíme volbu "Vytvoř zde zástupce", poté jej přejmenujeme na požadovaný název) či v příkazové řádce spuštěné jako správce (do vyhledávacího pole ve Start menu napíšeme "cmd" a stiskneme klávesy CTRL + SHIFT + ENTER) pomocí následující syntaxe (jedná se o souvislý text s mezerami, nikoli o 2 řádky):

  • mklink c:\Users\Vojta\Desktop\diplomka.txt c:\Users\Vojta\Documents\diplomova_prace.txt

Příkaz vypadá možná na první pohled zdlouhavě, ale rozhodně cestu nemusíte vypisovat celou, stačí vždy napsat kousek a stisknout klávesu TAB, která nám text doplňuje sama. Na ploše máme nyní tedy standardního zástupce. Teď postupme k meritu tohoto příkladu a výše napsaný příkaz (editací pro ty, co jej použili pro vytvoření zástupce, ostatní spouští cmd až nyní) lehce zeditujeme, a to tak, že doplníme parametr "/h" (pozn. před tímto krokem si pro názornost a funkcionalitu příkazu přejmenujte již vytvořeného zástupce na ploše např. na "diplomka - zástupce):

  • mklink /h c:\Users\Vojta\Desktop\diplomka.txt c:\Users\Vojta\Documents\diplomova_prace.txt

Nyní byste tedy měli mít na ploše dva soubory - "diplomka - zástupce" a "diplomka" (za předpokladu, že máte zapnuto zobrazování přípon, budou názvy samozřejmě zobrazeny s příslušnou koncovkou, tj. *.lnk respektive *.txt). Nuže pojďme si teď trošku hrát... :-)

Simulujeme situaci, že jsme si nechtěně inkriminovaný soubor ve složce Dokumenty smazali - učiňte tak kliknutím na "diplomova_prace" a stiskem kláves SHIFT + DEL, čímž soubor smažete přímo, bez mezipřistání v koši. No a teď si zkuste otevřít soubor na ploše nejprve skrze vytvořeného zástupce, poté pomocí hardlinku. Zjistíte, že samozřejmě zástupce odkazuje na "neexistující" cíl a soubor nelze otevřít, zatímco hardlink funguje stále, jako byste nic nesmazali. Pěkné že? Soubor můžete zpětně na původní, ale i jiné umístění obnovit následujícím příkazem (de facto jde o vytvoření "hardlink z hardlink"):

  • mklink /h c:\Users\Vojta\Documents\diplomova_prace.txt c:\Users\Vojta\Desktop\diplomka.txt

Vyzkoušejte nyní opět standardního zástupce na ploše, který - světe div se - začne znova fungovat. Zkuste ale třeba soubor "diplomova_prace" cvičně přesunout na plochu. Zástupce na ploše opět přestává fungovat, neboť se odkazuje na neexistující cestu, ovšem co na to náš hardlink? Ten opět samozřejmě funguje! Shrňme si tedy pár základních vlastností hardlinků:

  • nezávislost na cestě k odkazovanému souboru - hardlink funguje i při změně umístění souboru
  • cílový soubor můžete klidně smazat či přejmenovat, hardlink přesto nadále funguje
  • dokud existuje alespoň jeden hardlink na daný soubor, ten pak bude (za předpokladu znalosti umístění hardlinku) vždy čitelný resp. spustitelný

Schránka01 Na obrázku výše si pro kontrolu můžete prohlédnout příkazy, které byly zadávány. Jak vidíte, hardlink může být za jistých okolností velice luxusní funkce, pokud si chcete "pojistit" určité dokumenty/soubory proti nechtěnému smazání, přesunutí či přejmenování, kdy např. v posledně jmenovaném případě již ani nedohledáte soubor dle názvu a tudíž případný standardní zástupce vám bude k ničemu. Na bázi hardlinků fungují i aktualizace ve Windows Vista - pokud se některá z aktualizací nainstaluje špatně či jakkoli selže, nic se neděje, k původním souborům existují hardlinky a tudíž vám Visty neselžou - o tomto si mohou XP nechat jen zdát.

Když už ale hardlinks tak chválím, musím zmínit i jistá rizika. Tak zejména fakt, že dokud nesmažete veškeré hardlinky, soubor zabírá neustále místo na disku (upozorňuji, že pouze jedenkrát, bez ohledu na to, že hardinků na něj je 1 nebo 100), což může být někdy nepříjemné, pokud jsme si zapomněli poznamenat, kde všude jsme si udělali hardlink na patřičný soubor. Nabízí se i možnost, že případný virus by se mohl "pojistit" proti smazání tím, že na sebe vytvoří určitý počet hardlinků, přičemž i když by antivirus rozpoznal cílové umístění infikovaného souboru, jeho smazáním by nic nevyřešil, neboť soubor by díky hardlinku na disku nadále zůstával. Zejména z tohoto důvodu doporučuji, ačkoli to řada lidí využívající Visty nedělá, nechat zaplé UAC (user account control), tj. "řízení uživatelských účtů", neboť jedině tak případný pokus o zápis škodlivého kódu do chráněných sekcí operačního systému bude zablokován a museli byste ho výslovně povolit. Ale to by si žádalo samostatnou debatu, možná o tom napíšu samostatný příspěvek.

Takže zapněte si UAC a hurá do hraní si s hardlinks! ;-)

pozn. pro zvídavé - všimněte si, že systém Windows neumí rozpoznat správně velikost hardlinku - narozdíl od standardního zástupce u něj ukazuje stejnou velikost, jako cílový soubor, na který se odkazuje. Nebojte se, nezabírá o nic víc, než normální zástupce, tj. prakticky nic. Snadno tento fakt ověříte tak, že si vytvoříte např. 10 MB velký diskový oddíl a na něm vytvořte aspoň 2 MB velký textový soubor a k němu deset hardlinků. Windows vám budou pri označení všech hardlinků tvrdit, že zabírají >20 MB, ačkoli máte pouze 10 MB velký oddíl - čili žádný strach, tvorbou hardlinků rozhodně o volné místo na disku nepřicházíte! ;-)

6 komentářů:

Unknown řekl(a)...

Ahoj,
to zálohování přes hardlink bohužel nebude fungovat 100%. Pokud si uděláš záložní hardlink na excelovský soubor, který následně v Excelu upravíš, k žádné záloze nedojde.
Důvod je prostý, Excel totiž standardně upravuje soubor v kopii. Při uložení pak původní soubor smaže a přejmenuje pracovní kopii na jeho jméno. Hardlink se tak smaže, neboť jde o nový soubor.

Tak a co teď s tím?

Vojtech Kovac řekl(a)...

Hmm, tak to jsem přiznám se zatím nezkoušel, ja si hrál jen s nezměněnými soubory, kdy jsem si ověřoval, že díky hardlinku zůstávají i po smazání nepoškozeny.

Předpokládám, že jste to již zkoušel a nefungovalo to?

Pak mě napadá jedině napsat si malý skriptík, kterým si automatizovaně pokaždé, co změním příslušný soubor, poté udělá nový hardlink...

Ale popřemýšlím nad tím a pokud mě něco kloudného napadne, doplním to do článku...každopádně díky za zajímavý postřeh!

Unknown řekl(a)...

Ahoj,
jojo zkoušel, pokud má soubor koncovku xlsx, tak to zlobí, pokud xls, tak je to OK. To víš pokrok:)

Add skriptík, to by určitě šlo, ale přiznám se že v Linuxu navázat událost na změnu souboru umím, ve Win bych musel sehnat nějakou utilitku. Situaci to ale neřeší, protože tím může dojít k mnoha kolizím, nehledě na to že musíš udržovat, kde všude se ty hardlinky mají obnovit.

Nicméně to není výtka k hardlinkům, ty pracují správně. Holt je to hloupá shoda okolností, že Excel pracuje tak jak pracuje a jen jsem nato chtěl upozornit, protože v článku to doporučuješ na zálohování Office.

Jinak článek se ti povedl:)

Vojtech Kovac řekl(a)...

Díky za cenný postřeh i pochvalu. Popravdě jsem to zkoušel jen s jednoduchým texťákem a tak nějak jsem usoudil, že to tak bude i u Office...
Tohle teda MS s novým excelem nějak nevychytal...třeba windows 7 tento - pro mne tedy hrubý nedostatek - opraví :-)

Eddie řekl(a)...

Znamená to tedy, že když udělám soubor co má 100gb, pak na něj vytvořím hardlink a orig. soubor smažu, budu mít na disku o 100gb více místa a soubor díky hardlinku zůstane plně zachován? :)

Vojtech Kovac řekl(a)...

Kdepak, místa zůstane na disku stále stejně, protože pokud na ten soubor, o kterém mluvíš, uděláš hardlink, tak jeho smazáním ti akorát tento soubor zmizí "na oko" - ty ho v dané složce ve windows již neuvidíš, ale stále bude tento soubor skrze hardlink, který máš někde jinde, přístupný.

Tj. dokud nesmažeš všechny hardlinky, které na daný soubor odkazují, defacto ten soubor ve windows proste nesmažeš, i kdyby ses rozkrájel - pomineme-li formát disku :-)

Je to dvousečná zbraň, pokud v hardlinks nemáš přehled a umisťuješ je všude možně po složkách, kdy se pak může stát, že určitou část souborů díky tomuto nepořádku nebudeš schopen smazat ;-) Na druhou stranu tím můžeš někoho vyprovokovat - provokativně si umístit určité soubory klidně tam, kde je on nechce a kdykoli jej smaže, lehce jej obnovíš :-P