Share via


Symlink, czyli MKLINK w Windows Server 2008

System Windows Server 2008 Core budzi wiele kontrowersji, ale i zainteresowania wsród administratorów róznych typów systemów operacyjnych. Z racji tego, ze z serwerem Core mam przyjemnosc pracowac juz troche czasu, zastanawialam sie jak ulatwic sobie prace i jakie mechanizmy mi w tym pomoga. Narzedziem, bez którego nie wyobrazam sobie pracy serwerem Core jest mklink, umozliwiajace tworzenie dowiazan symbolicznych (symlink) do obiektów w systemie plików NTFS. Kiedys juz mialam okazje opisywac to narzedzie, ale z racji tego, ze podczas ostatniego wdrozenia bardzo zaciekawilo, pochodzacych z “alternatywnej rzeczywistosci” (Unix), administratorów, postanowilam ponownie umiescic te informacje.

Narzedzie to jest znane uzytkownikom Windows Vista i Windows Server 2008, tak naprawde jednak jego zalety odkrywa sie przy pracy z konsola. Niestety, administratorzy Unix nadal ze swoim zestawem narzedzi konsolowych wioda prym, nie zmienia to jednak faktu, ze jest to duzy krok naprzód rozwiazujacy niektóre problemy w pracy z konsola, przynajmniej dla mnie.

Narzedzie mklink jest równiez poleceniem systemowym, wystarczy wpisac jego nazwe w konsoli i otrzymuje sie liste dostepnych parametrów:

Polecenie MKLINK - parametry

 Rysunek 1. Parametry polecenia mklink.

Znaczenie poszczególnych opcji:

- link - alias dla tworzonego dowiazania
- target - miejsce docelowe, do którego ma zostac utworzone dowiazanie
- mklink link target - polecenie bez parametrów tworzy dowiazanie miekkie (soft link) do pliku
- /D - tworzy dowiazanie symboliczne lub miekkie. Dziala podobnie do skrótów do folderów
- /H - tworzy dowiazanie twarde (hard link) wskazujace bezposrednio na plik. Opcja ta nie moze byc bezposrednio wykorzystana do folderów, nalezy wykorzystac do tego opcje /J
- /J - tworzy punkt polaczenia do folderu (Directory Junction). Spelnia funkcje dowiazania twardego do folderu, funkcja punktów polaczenia jest proste przekierowanie do wybranego miejsca

Róznica pomiedzy dowiazaniami twardymi (hard links) a miekkimi (soft links):

Dowiazanie twarde - wskazuje bezposrednio na plik, wzgledem systemu operacyjnego samo jest plikiem. Chcac oszukac folder, w którym znajduje sie oryginalny plik, jest to idealna do tego celu opcja. Nadaje etykiete dla dowiazania w postaci pliku widocznego przez system operacyjny.

Dowiazanie miekkie - jest skrótem do pliku lub folderu, dwukrotne klikniecie w dowiazanie miekkie powoduje automatyczne przekierowanie do folderu docelowego. Nadaje etykiete dla dowiazania w postaci skrótu wskazujacego na folder lub plik.

Przyklady uzycia mklink w systemie Windows Server 2008 Core:

1. mklink /J DoTestowego C:\Users\Paula\Testowy - utworzenie punktu polaczenia o nazwie DoTestowego wskazujacego na wczesniej utworzony folder C:\Users\Paula\Testowy

 Przyklad 1
Rysunek 2. Utworzenie punktu polaczenia.

W punkcie polaczenia DoTestowego wczesniej utworzony plik „plik.txt” w folderze Tesotwy, równiez jest widoczny.

2. mklink Notatnik.exe C:\Windows\System32\notepad.exe - utworzenie symbolicznego dowiazania miekkiego do pliku notepad.exe. Od tej pory wpisujac Notatnik.exe w systemie bedzie otwieral sie Notatnik.

Przyklad 2
Rysunek 3. Utworzenie symbolicznego dowiazania miekkiego.

3. mklink /H DoTestowegoHard C:\Users\Paula\Testowy - próba utworzenia dowiazania twardego do folderu. Aby polecenie zadzialalo nalezy dodatkowo skorzystac z opcji /J. W efekcie powstaje punkt polaczenia.

Przyklad 3
Rysunek 4. Utworzenie punktu polaczenia.

4. mklink /D DoTestowegoSoft C:\Users\Paula\Testowy - utworzenie symbolicznego dowiazania do folderu Testowy.

Przyklad 4
Rysunek 5. Utworzenie symbolicznego dowiazania miekkiego.

5. mklink /D /J DoTestowegoSoftJuction C:\Paula\Testowy - utworzenie punktu polaczenia do folderu Testowy.

Przyklad 5
Rysunek 6. Utworzenie punktu polaczenia.

6. mklink /H hardTest.exe C:\test.exe - utworzenie dowiazania twardego do wczesniej utworzonego pliku test.exe. Plik hardTest.exe jest rozpoznawalny przez system operacyjny jako plik.

Przyklad 6
Rysunek 7. Utworzenie symbolicznego dowiazania twardego.

7. Na ponizszym zrzucie znajduja sie wyniki dzialania powyzszych polecen:

Wyniki dzialania polecenia MKLINK
Rysunek 8. Wynik wykorzystania narzedzia mklink.

Usuwanie dowiazan symbolicznych wykonuje sie przy wykorzystaniu polecen:
- del - dla dowiazan dla plików
- rd - dla dowiazan dla folderów

Usuniecie pliku nie powoduje usuniecia dowiazan twardych, miekkich oraz punktów polaczenia.

Podsumowanie

W systemach typu Unix i Linux symlink jest wykorzystywany juz od dluzszego czasu. W systemach Windows Server 2008 i Windows Vista, oprócz poprzednich narzedzi tj. linkd, czy junction, narzedzie mklink umozliwia tworzenie dowiazan symbolicznych wykorzystujac przy tym mozliwosci systemu plików NTFS. Uprawnienia do tworzenia dowiazan maja tylko czlonkowie grupy administratorów, chyba, ze polityka wskazuje inaczej (secpol.msc). Punkty polaczenia znane z poprzednich systemów mogly byc tworzone jedynie dla folderów i wolumenów, symlinki dodatkowo mozna tworzyc dla plików, czy UNC. Korzysci z uzywania mklink sa oczywiste, narzedzie to jest pomocne, w sytuacji, gdy mamy rozproszona strukture katalogowa i chcemy miec mozliwosc zarzadzania nia z jednego miejsca, lub w sytuacji, gdy sciezka do czesto wykorzystywanego pliku/folderu jest zbyt skomplikowana, aby wpisywac ja za kazdym razem, kiedy istnieje potrzeba dostania sie w wybrane miejsce. Punkty dowiazania sa wykorzystywane w systemach Windows Server 2008 i Windows Vista jedynie w celu zapewnienia kompatybilnosci ze starszymi wersjami systemów operacyjnych dla profili uzytkownika (np. Documents and Settings), aby wskazywaly na nowe foldery systemowe w katalogu Users.

Autor: Paula Januszkiewicz

Comments

  • Anonymous
    January 01, 2003
    Witam. Przeczytałem powyższy wpis, bo sam się interesuję tymi rodzajami skrótów/dowiązań, ale mam problem z kilkoma rzeczami.
  1. Nie rozumiem po co zostało tutaj użyte polecenie mklink z parametrami /j, /h /j, /d /j, skoro wszystkie działają jako /j czyli dowiązanie twarde. Czy tylko dla pokazania wyników wszystkich możliwych kombinacji czy może to się jednak czymś różni?
  2. W przypadku dowiązań twardych dla plików nowy plik wskazuje na adres pamięci na dysku dla pliku oryginalnego. Na co wskazuje folder z dowiązania twardego na oryginalny folder? Pytam dlatego, że jeżeli utworzyłem dowiązaniem twardym nowy plik to plik oryginalny mogę skasować i nadal będę mógł pracować na nowym pliku. Jeżeli skasuję oryginalny folder, to dowiązanie twarde do folderu nie będzie działać. Ponadto w sytuacji gdy mam dowiązanie twarde do pliku to gdy go przeniosę na inną partycję, to oczywiście dowiązanie ginie i mam dwa pliki zapisane w różnych miejscach jednak gdy zrobię to samo z folderami to z oryginalnego folderu znikają dane.
  3. Chciałem zrobić symboliczne dowiązanie na systemach starszych niż Windows NT 6. Znalazłem komendę fsutil create hardlink do tworzenia dowiązań twardych dla plików. Znalazłem też komendę junction, która jest wymieniona w tym artykule ale zarówno ona jak i linkd nie działa Windows XP, ani zamiennie (jak fsutil create hardlink dla mklink /h) na Windows Server 2008 R2 (wersja Enterprise SP1 RC1). Było by mi bardzo miło gdybym znał odpowiedź chociaż na część z tych pytań :)
  • Anonymous
    January 01, 2003
    Cieszę się bardzo, że się przydało - obiecuję, że takich informacji  będzie więcej!

  • Anonymous
    January 24, 2009
    W sumie już wcześniej chciałem to zrobić, ale jakoś z czasem krucho było, tak więc czynię to teraz: dziękuję za krótkie bo krótkie, ale jednak ciekawe wyjaśnienie tematu. :) Część informacji została już wdrożona w życie. Czekam na dalsze tego typu informacje.

  • Anonymous
    May 01, 2010
    Dzięki za artykuł :) Przyniosło mnie tu w poszukiwaniu dla mnie jednak mało jasnej kwestii składni polecenia mklink /h. Okazało się, że mklink /h .Plik.bin C:InnyFolder Plik.bin nie działa, zaś mklink /h C:InnyFolder Plik.bin .Plik.bin działa. Przed wykonaniem polecenia Plik.bin znajduje się tylko w bieżącym folderze.