Dziś będzie o tym, jak utworzyć linki symboliczne – na przykładzie systemu Windows oraz Linux (w tym Mac OSX). Zaryzykuje stwierdzenie, że jeśli ktoś z nich nie korzysta/nie używa, to jest duża szansa, że wynika to tylko i wyłącznie z braku wiedzy o nich… ;-)
Spis treści w artykule
Linki symboliczne (dowiązania symboliczne)
Zaczniemy od odrobiny teorii:
Link symboliczny – specjalny rodzaj pliku, który podobnie jak „zwykły skrót” wskazuje na inny plik lub katalog. Główna różnica polega na tym, że większość programów traktuje taki „link” nie jako „skrót”, a tak jakby wskazany plik/katalog faktycznie znajdował się w tym miejscu.
Skasowanie linku symbolicznego nie powoduje skasowania pliku/katalogu na który link wskazywał.
Warto wiedzieć, że istnieje jeszcze coś takiego jak linki trwałe (dowiązania trwałe), ale zdecydowanie rzadziej korzysta się z tego rozwiązania.
W systemach z rodziny Windows linki/dowiązania można tworzyć na partycjach NTFS.
Polecenie mklink
W systemach Windows (od Visty w górę) można skorzystać z wbudowanego polecenia „mklink”:
mklink nazwa_linku element_docelowy
Dostępne opcje:
- /H – Trwałe łącze zamiast dowiązanie symboliczne
- /D – Link do katalogu (domyślnie plik)
- /J – Tworzy połączenie katalogów (junction)
Link (d:\dokumenty\dokument.doc) do pojedynczego pliku (c:\user\patryk\dokumenty\dokument.doc):
mklink d:\dokumenty\dokument.doc c:\user\patryk\dokumenty\dokument.doc
Link (d:\dokumenty) do całego katalogu (c:\user\patryk\dokumenty):
mklink /D d:\dokumenty c:\user\patryk\dokumenty
Polecenie junction
W starszych systemach (Windows Xp lub starszych) również można skorzystać z podobnego rozwiązania, choć wymaga skorzystania z dodatkowego oprogramowania – Windows Server 2003 Resource Kit Tools.
Po instalacji składnia polecenia wygląda następująco:
linkd element_docelowy nazwa_linku
Zestaw narzędzi Sysinternals
Można też skorzystać z programu Junction wchodzącego w skład „paczki” Sysinternals, w tym przypadku składnia wygląda następująco:
junction nazwa_linku element_docelowy
Ogólnie polecam zapoznać się z dostępnymi w ramach tej paczki programami – znajdziecie tam wiele przydatnych narzędzi, nie tylko do tworzenia linków symbolicznych…
Link Shell Extension
W systemach Windows możemy również skorzystać z programu „Link Shell Extension” (LSE), dzięki czemu tworzenie „linków” upraszczamy właściwie do granic możliwości – wszystkie opcje mamy w wygodnym menu kontekstowym, dostępnym pod prawym przyciskiem myszy:
Po instalacji warto też zajrzeć do opcji, w tym celu należ w Menu Start odszukać program „LSEConfig”:
W Linuxie mamy polecenie ln
W systemach Linux (również Mac OSX) można skorzystać z wbudowanego polecenia „ln”:
ln -s element_docelowy link_symboliczny
ln element_docelowy dowiązanie_twarde
Przykładowe zastosowanie
Możliwości zastosowania jest cała masa, choćby przeniesienie w sposób „niezauważalny” dla jakiejś aplikacji jej katalogu z danymi z jednego miejsca w inne. Sam często wykorzystuje to w przypadku DropBoxa (ale i w przypadku innych usług tego typu będzie miało to zastosowanie).
O ile np. niektóre aplikacje „chmurowe” współpracują z normalnymi skrótami – dzięki czemu, zamiast kopiować pliki do katalogu usługi, wystarczy utworzyć skrót, by dane te wysłać do „chmury”, to np. w przypadku DropBoxa już tak to nie zadziała – zostanie przesłany tylko skrót, jako zwykły plik. I tu wystarczy skorzystać z linku symbolicznego… :-)
Przykład:
Na powyższym przykładzie utworzyłem link symboliczny do katalogu z magazynami:
D:\Copy\eMagazyny
jako:
D:\DropBox\eMagazyny
Dzięki czemu bez potrzeby fizycznego kopiowania danych, katalog „eMagazyny” będzie dostępny zarówno w swojej podstawowej lokalizacji, jak i DropBox – a na dysku (komputer lokalny) będzie zajmował miejsce tylko raz, a do tego wszelkie zmiany będą zachodziły automatycznie w obu usługach…
Lista linków (symbolicznych)
Może się zdarzyć, że przez lata korzystania z linków (dowiązań) zgromadzi się nam w systemie całkiem pokaźna ich ilość. Warto wiedzieć, jak ew. można sprawdzić co i gdzie linkuje.
W systemie Windows możemy skorzystać z poleceń (dla różnych typów dowiązań):
dir /al /s c:\ | find "SYMLINK"
dir /al /s c:\ | find "SYMLINKD"
dir /al /s c:\ | find "JUNCTION"
Oczywiście w miejscu „c:\” należy wpisać literę dysku do przeszukania. Można też skorzystać z programów takich jak NTFSLinksView czy SageLinks.
W systemie Linux (na pewno bazujących na Debian, bo z tych korzystam) można skorzystać z polecenia:
ls -aFhl /ścieżka | grep ^l
Ew. by przeskanować również podkatalogi:
ls -aFhlR /ścieżka | grep ^l
Oczywiście w miejscu „/ścieżka” należy wskazać katalog/zasób do przeskanowania.
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Jeszcze prostsze do użycia. Jest to
http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
Korzystam od lat.
Kiedyś (w czasach XP) korzystałem z tego, albo bardzo podobnego rozwiązania – faktycznie wygodne, bo odpowiednie opcje mamy w menu kontekstowym…
Choć tym razem chciałem oprzeć się na „wbudowanych” poleceniach… Poza starszymi systemami z rodziny Windows, gdzie jakiś „dodatek” jest jednak wymagany…
czy można sprawdzić jakie dowiązania są zapisane w systemie np. gdy nie pamiętamy co było zrobione np. rok temu?
Tak można. Zaktualizowałem artykuł/poradnik o informację jak to można zrobić.
Czy zamiast „symbolic link” do folderu nie byłoby lepiej użyć „junction point”?
Jeśli pytasz w kontekście Windowsa i /D, to jest to przykład i możesz użyć /J. A co lepiej? Zależy, bo choć w obu przypadkach w większości przypadków będzie to działać podobnie, to są pewne różnice, które w konkretnej sytuacji mogą mieć znaczenie (np. w kontekście zasobów sieciowych, uprawnień).