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… ;-)

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:

link-shell-extension_program-windows02

Po instalacji warto też zajrzeć do opcji, w tym celu należ w Menu Start odszukać program „LSEConfig”:

link-shell-extension_program-windows01

 

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:

windows7_mklink

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.

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk