Nie wszyscy sobie z tego zdają sprawę, ale Windows podobnie jak te bardziej porządne systemy operacyjne obsługuje funkcjonalność dowiązania symbolicznego. Słowem wyjaśnienia dla mniej technicznych użytkowników, dowiązanie symboliczne to informacja o tym, gdzie plik się znajduje. Dowiązanie zachowuje się dokładnie tak jak plik, jednak plikiem nie jest. Dowiązanie symboliczne jest podobne do skrótu (tego z ikonką strzałeczki w rogu), tylko jest bardziej.
Windows nie wspiera w sposób klikalny dowiązań symbolicznych, a szkoda. Trzeba się przełączać do tej brzydkiej i przerażającej konsoli i pisać polecenia. Nie chcę tutaj się wdawać w teorię, czym dokładniej są dowiązania symboliczne, bo każdy kto zna Uniksa będzie się nudził czytając, a pozostali i tak nie zrozumieją.
Jak zrobić swoje własne dowiązanie symboliczne? Bardzo prosto!
Na początku musimy otworzyć konsolę (start+r, wpisać: cmd, nacisnąć enter). Następnie wywołujemy magiczne polecenie mklink:
Creates a symbolic link.
MKLINK [[/D] | [/H] | [/J]] Link Target
/D Creates a directory symbolic link. Default is a file symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
Link to nazwa dowiązania. Target, jak łatwo się domyślić, cel, obiekt wskazywany.
Przełącznik D umożliwia stworzenie dowiązania do katalogu, a nie tylko pliku. Stosuje się razem z J.
Windows pozwala stworzyć hardlink do folderu i w ten sposób mieć pętlę w systemie plików. Nie jest też na tyle inteligentny, aby kasując tylko usunąć dowiązanie. Usunie dowiązanie i to, co pod nim leży. Jeśli przeniesiemy dowiązanie do katalogu do kosza, pliki oryginalne będą istnieć tak długo, jak długo nikt nie wyrzuci śmieci.
Antywirus gdy zacznie skanować zapętlony katalog, będzie się kręcił, aż się wysypie, lub WinAPI powie, że nie rozumie nazwy dłuższej niż 255 znaków.
Do czego są te całe dowiązania? Chociażby po to, aby oszczędzić miejsce na dysku i uniknąć redundancji. Albo po to, aby zachować kompatybilność z innymi wersjami oprogramowania. Albo po to, by móc mieć Program Files na innej partycji. I do miliona innych celów.
Ps. Starsze windowsy, mające już (jeszcze?) NTFS mają polecenie linkd zamiast mklink, ale to temat na odrębny wpis…
Dodatkowe informacje:
http://pl.wikipedia.org/wiki/Dowiązanie_symboliczne
http://itblogs.pl/blogs/paula/archive/2008/03/09/symlink-czyli-mklink-w-windows-server-2008.aspx
http://en.wikipedia.org/wiki/NTFS_junction_point
http://support.microsoft.com/kb/205524