Linki symboliczne w Windowsie

Wiesz co to są linki symboliczne i linki twarde w systemie Linux? Podobny mechanizm oferuje Windows! Dowiedz się jak je tworzyć.

Linki symboliczne Windows

Spis treści

  1. Co to jest link symboliczny i twardy
  2. Linki w systemie Linux
  3. Windows a linki
  4. Tworzenie linków symbolicznych w Total Commanderze
  5. Do czego można wykorzystać linki symboliczne?

Link symboliczny (znany także jako dowiązanie symboliczne, z ang. symbolic link lub w skrócie symlink), to specjalny rodzaj pliku, który w pewien sposób wskazuje na inny plik na dysku, a w zasadzie na ścieżkę do tego pliku (sam plik docelowy może nawet nie istnieć – wtedy symlink prowadzi donikąd, więc nie da się go użyć). Linki symboliczne mogą być tworzone do plików na innym dysku niż one same. Usunięcie symlinka nie wpływa w żaden sposób na plik docelowy.

Program, który potrafi obsługiwać linki symboliczne, potrafi je odróżnić od normalnego pliku. Program który tego nie potrafi, obsługuje je jak każdy inny plik.

Link twardy (dowiązanie twarde, łącze stałe lub z ang. hardlink), to referencja na istniejący i-node na tym samym dysku, na tej samej partycji. Po stworzeniu hardlinku do pliku, istnieje on na równi z plikiem pierwotnym. Usunięcie pliku pierwotnego nie usuwa fizycznie pliku z dysku, tylko usuwa referencję, a nie plik właściwy. Miejsce na dysku jest zwalniane dopiero po usunięciu ostatniej referencji, czyli ostatniego linka twardego.

Część wspólna linków twardych i symbolicznych to fakt, że utworzenie jednego i drugiego nie powoduje zwiększenia zajętości dysku o wielkość pliku docelowego, tylko o kilka bajtów.

Zdecydowanie częściej korzysta się z symlinków niż z hardlinków.

Linki w systemie Linux

Dla osób pracujących pod Linuksem, link symboliczny (i twardy) jest czymś normalnym. Korzysta się z nich często, bo są bardzo wygodne. Utworzenie linku symbolicznego uzyskuje się poleceniem ln -s scieżka_do_pliku_istniejącego ścieżka_do_powstającego_linku. Jak już wspomniałem, „plik istniejący” może nie istnieć, a link zacznie działać poprawnie w momencie, gdy ten plik zostanie stworzony.

Utworzenie linku twardego, to polecenie ln scieżka_do_pliku_istniejącego ścieżka_do_powstającego_linku. Jak pewnie łatwo zauważyć, różni się jedynie brakiem opcji -s, oznaczającego dowiązanie symboliczne.

W systemie Linux do tworzenia linków symbolicznych do katalogów używa się tego samego polecenia.

Windows a linki

W systemie Windows (od wersji 2000) mamy możliwość korzystania z linków, ale jedynie na partycji NTFS. W Windows Vista (tak samo w Windows7) producent udostępnił prosty programik dla linii poleceń (Start/Uruchom cmd), którym można tworzyć linki twarde i symboliczne, a także linki do katalogów (tutaj pod nazwą junction point). Użycie równie proste jak w Linuksie: mklink <opcje> nazwa_dowiązania ścieżka_docelowa. Warto zauważyć odwróconą kolejność linku i pliku/katalogu docelowego (w stosunku do polecenia ln w Linuksie). Dostępne opcje to:

Linki symboliczne są w Eksploratorze Windows oznaczone małą ikonką strzałki. Usunięcie takiego linku nie powoduje żadnych zmian na pliku docelowym. Linki twarde są widoczne jak każdy normalny plik.

Linki usuwa się tak samo jak pliki/katalogi. Istotnym faktem jest, że aby utworzyć link, potrzebujesz praw administratora systemu. Z poziomu zwykłego użytkownika się tego nie da zrobić, więc uruchamiając program cmd, nie zapomnij uruchomić go jako administrator.

Czym różni się link symboliczny do katalogu od tzw. junction point? Trudno powiedzieć, aczkolwiek jeśli chcesz udostępniać po sambie, korzystaj z junction pointów a nie dowiązań do katalogów, bo z tymi drugimi bywają problemy.

Programy integrujące się z systemem

Zapewne jest wiele programów ułatwiających pracę z linkami, najpopularniejszym jest chyba Link Shell Extension, ale wiele innych znajdziesz w wyszukiwarce.

Kolejny program, dla Windowsów starszych niż Vista, dostępny jest na stronach technet.microsoft.com – jest to program Junction działający pod konsolą (tak jak mklink).

Tworzenie linków symbolicznych w Total Commanderze

W programie Total Commander można na pasku z przyciskami dodać własny, który będzie służył do tworzenia linków symbolicznych. Otwórz menu „Konfiguracja”/„Zmień pasek narzędzi”. Po wciśnięciu przycisku „Dodaj” jako „Polecenie” wpisz C:\Windows\System32\cmd.exe, a w polu „Parametry” wartość /C FOR %%F IN (%S) DO IF EXIST "%P"%%F\ (mklink /J "%T"%%F "%P"%%F) ELSE (mklink "%T"%%F "%P"%%F). Możesz dowolnie wybrać ikonkę (np. jakąś z pliku C:\Windows\System32\shell32.dll) i etykietki (np. Link symboliczny). Po zapisaniu masz ikonkę, po kliknięciu której plik lub katalog znajdujący się pod kursorem, zostanie podlinkowany po drugiej stronie okna TC.

Drobne wyjaśnienie czemu tak skomplikowane są parametry: jako że program mklink musi dostać inne parametry w przypadku linku symbolicznego do pliku, niż w przypadku punktu połączenia (junction point) katalogów, więc na początku musimy sprawdzić czy pod kursorem jest plik, czy katalog.

Unreal Commander

Dla osób korzystających z darmowej alternatywy, czyli Unreal Commandera (chyba najfajniejszy z darmowych alternatyw), sposób jest bardzo podobny, chociaż z kilkoma różnicami. Edycja elementów na pasku przycisków odbywa się z poziomu menu „Konfiguracja”/„Opcje”, a następnie „Pasek narzędzi”. Tutaj podobnie, po kliknięciu przycisku „Dodaj”, wybierasz nazwę i ikonkę. W polu „Komenda wykonawcza” wpisujesz tak samo C:\Windows\System32\cmd.exe, a w polu „Parametry” wartość /C IF EXIST "%P%N\" (mklink /J "%T%N" "%P%N") ELSE (mklink "%T%N" "%P%N"). Zwróć uwagę na znaki cudzysłowu, które są tu niezbędne! Minus jest taki, że podlinkować możesz w ten sposób jedynie pojedyncze pliki/katalogi, nie uwzględnia to ewentualnego podznaczenia jednego lub więcej plików, jedynie plik znajdujący się aktualnie pod kursorem.

TC/UC uruchomiony z prawami zwykłego użytkownika

Co zrobić, jeśli uruchamiasz swojego komandera bez praw administratora? Ten drobny problem można rozwiązać, tworząc skrót (zwykły skrót, nie link) do programu C:\Windows\System32\cmd.exe w dowolnym miejscu (np. w katalogu C:\Windows\System32). Po stworzeniu skrótu, wejdź w jego właściwości (PPM) i w zakładce „Skrót”, pod przyciskiem „Zaawansowane” zaznacz Uruchom jako administrator. Podając jako polecenie na ten skrót, zamiast pliku cmd.exe, jeśli TC/UC jest uruchomiony bez praw administratora, przy każdorazowym tworzeniu linku symbolicznego, będziesz musiał potwierdzić monit o uruchomienie polecenia z prawami administratora.

Do czego można wykorzystać linki symboliczne?

Potrzeb zapewne jest wiele i każdy ma jakieś swoje ulubione, ale wymienię kilka które akurat przychodzą mi na myśl:

Zapewne sam wymyślisz kilka kolejnych ciekawszych zastosowań :) Po to właśnie są linki symboliczne!