Link symboliczny lub twardy, a prawidłowo dowiązanie lub łącznik, to (w Linuxie) coś w rodzaju windowsowego skrótu do katalogu lub pliku. A dokładnie, to odwrotnie.
Odwrotnie, bo dowiązania w Linuxie były odkąd pamiętam, a Microsoft skróty działające prawie jak łączniki wprowadził w Windows 95. Tak więc windowsowy skrót, to takie prawie linuxowe dowiązanie.
Jakie są różnice między skrótem, a dowiązaniem?
Załóżmy, że mamy plik sprawozdanie.xls, który jest umieszczony w jakimś podkatalogu, a że często go edytujemy, to
- w Windows na Pulpicie tworzymy do niego skrót
- w Linuxie na Pulpicie tworzymy do niego dowiązanie
W obu przypadkach dwukliknięte obiekty na pulpicie działają w ten sam sposób – otwierają plik do edycji. Ale przekopiowanie ich na CD, pendrive czy dołączenie jako załącznik e-mail, aby przekazać sprawozdanie szefowi czy zarchiwizować przyniesie odmienne efekty.
- w Windows przekopiujemy nie sam plik sprawozdanie.xls, tylko skrót do niego
- w Linuxie przekopiujemy plik sprawozdanie.xls
Jak widać prawie robi różnicę, którą Microsoft zauważył po ćwierć wieku i … spłodził mklink. Wspaniałomyślnie, za free, dorzucił komendę do Windows „WoW”, która teraz jara jego użytkowników.
Ale do rzeczy.
Łącznik do katalogu czy pliku NIE JEST ani skrótem, ani linkiem, bo nie prowadzi do dowiązanego obiektu, tylko wskazuje jego położenie w systemie plików. Różnicę w działaniu bardzo dobrze widać przy wyjściu z dowiązanego katalogu – wracamy do katalogu w którym jest dowiązanie, a nie do nadrzędnego dla dowiązanego.
Przykłady
Na dysku C: i D: mamy katalog test, czyli:
- C:\test
- D:\test
W katalogu C:\test tworzymy skrót i łącznik symboliczny do katalogu D:\test;
DIR C:\test zawraca następujący wynik:
Katalog: C:\test 2022-01-15 16:19 <SYMLINKD> test_dowiazanie [d:\test] 2022-01-15 16:19 659 test_skrot.lnk 1 plik(ów) 659 bajtów 3 katalog(ów) 157 098 913 792 bajtów wolnych




Dowiązania w Windows
Jak wspomniałem wyżej, dowiązania w Windows tworzy polecenie
mklink <opcje> nazwa_dowiązania cel
opcje:
- /D – dowiązanie do katalogu (symboliczne)
- /H – dowiązanie do pliku (twarde)
- /J – punkt połączenia katalogów (junction point)
Uwagi
Dowiązania może tworzyć tylko użytkownik z uprawnieniami administratora i tylko dla obiektów leżących na dyskach z system plików NTFS. No i argumenty polecenia podaje się w odwrotnej kolejności niż dla linuxowego ln – co jest oczywiste w przypadku produktów Microsofta.
Dowiązania w Windows XP
Microsoft mechanizm tworzenia dowiązań w swoich produktach udostępnił od Windows 2000. Ale nie za darmo, bo trzeba było kupić Win2K Resource Kit. Całe szczęście, że dla wersji XP i Serwer 2003 jest dostępne inne narzędzie, które oferuje tę możliwość za darmo.
Junction pozwala tworzyć dowiązania symboliczne do katalogów w Windows XP.
junction <opcje> nazwa_dowiązania cel
np.
C:\>junction c:\programy "c:\Program Files"
opcje:
- -s – wyświetla listę dowiązań na wskazanym dysku, np. junction -s c:\
- -d – usuwa wskazane dowiązanie, np. junction -d c:\programy
Instalacja Junction
Pobieramy Junction i wypakowujemy do katalogu Windows/system32.
Uwagi
Junction, tak jak mklink „działa” tylko na NTFS, ale nie tworzy dowiązań twardych – do plików. Nie pozwala też na dowiązania do zasobów sieciowych.
Uwagi dla tworzenia łączników
W każdym przypadku polecenie tworzące dowiązanie tworzy nowy obiekt nazwa_dowiązania. Oznacza to, że plik lub katalog nazwa_dowiązania nie może istnieć przed utworzeniem łącznika, ponieważ polecenie zwróci błąd.
Do czego to ma służyć?
Te same pliki i katalogi można „udostępniać” pod różnymi nazwami, pozwala dowiązywać katalogi w różne miejsca systemu plików, różnym użytkownikom – to wszystko „oszczędza” miejsce na dyskach i upraszcza zarządzanie plikami. W Linuxie jest tak naturalne, jak to, że w dzień świeci słońce.
Windows także docenił ich zalety. Oto zawartość katalogu C:\Users\Default
Katalog: C:\Users\Default 2009-07-14 06:08 <JUNCTION> Application Data [C:\Users\Default\AppData\Roaming] 2009-07-14 06:08 <JUNCTION> Cookies [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Cookies] 2018-07-01 23:19 <JUNCTION> Dane aplikacji [C:\Users\Default\AppData\Roaming] 2009-07-14 06:08 <JUNCTION> Local Settings [C:\Users\Default\AppData\Local] 2018-07-01 23:19 <JUNCTION> Menu Start [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu] 2018-07-01 23:19 <JUNCTION> Moje dokumenty [C:\Users\Default\Documents] 2009-07-14 06:08 <JUNCTION> My Documents [C:\Users\Default\Documents] 2009-07-14 06:08 <JUNCTION> NetHood [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Network Shortcuts] 2009-07-14 06:08 <JUNCTION> PrintHood [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Printer Shortcuts] 2009-07-14 06:08 <JUNCTION> Recent [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Recent] 2009-07-14 06:08 <JUNCTION> SendTo [C:\Users\Default\AppData\Roaming\Microsoft\Windows\SendTo] 2009-07-14 06:08 <JUNCTION> Start Menu [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu] 2018-07-01 23:19 <JUNCTION> Szablony [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Templates] 2009-07-14 06:08 <JUNCTION> Templates [C:\Users\Default\AppData\Roaming\Microsoft\Windows\Templates] 2018-07-01 23:19 <JUNCTION> Ustawienia lokalne [C:\Users\Default\AppData\Local] 0 plik(ów) 0 bajtów 15 katalog(ów) 157 104 861 184 bajtów wolnych
Dowiązania w Linux
W Linuxie są dwa typy łączników: twarde i symboliczne. Łączniki twarde, zwane też sztywnymi są w Linuxie łącznikami zwykłymi. Podstawowe różnice dla dowiązań twardych i symbolicznych zawiera poniższa tabela.
Tworzenie dowiązania | ln -s cel nazwa_dowiązania | |
Kasowanie dowiązania | ||
Dowiązanie pliku | ||
Dowiązanie katalogu | ||
Dowiązanie do obiektu w tym samym systemie plików | ||
Dowiązanie do obiektu w innym systemie plików | ||
Usunięcie dowiązanego obiektu | Nastąpi dopiero po usunięciu ostatniego łącznika. | Wszystkie istniejące łączniki wskazują nieistniejący obiekt. |
Usunięcie dowiązania | Usunięcie ostatniego dowiązania usuwa plik! | Usunięcie ostatniego dowiązania nie usuwa pliku/katalogu. |