Jak utworzyć łącze symboliczne w systemie Windows?

113

Windows Vista dodał możliwość tworzenia dowiązań symbolicznych do plików i katalogów. Jak utworzyć dowiązanie symboliczne i jakie bieżące wersje systemu Windows dla klientów i serwerów go obsługują?

cowgod
źródło
6
Czy ktoś może podkreślić różnice między dowiązaniem symbolicznym a skrótem?
tomjedrz
1
@tomjedrz: jeśli używasz skrótu, wszelkie interfejsy API do otwarcia tego skrótu otworzą plik tekstowy zawierający ścieżkę do docelowego pliku / folderu. jeśli używasz łączy, wszelkie interfejsy API do otwarcia tego łącza otworzą docelowy plik / folder.
Afriza N. Arief
2
Wbrew temu, co powiedzieli wszyscy, potwierdzam, że w systemie Windows XP można używać dowiązań symbolicznych . (Używam go do instalacji bazy danych Picasa w folderze współdzielonym VM). Wystarczy spojrzeć na schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html i przejść do sekcji „Dowiązania symboliczne dla systemu Windows XP”. HTH
Adam Ryczkowski

Odpowiedzi:

109

Możesz utworzyć dowiązanie symboliczne za pomocą narzędzia wiersza poleceń mklink.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

Łącza symboliczne za pośrednictwem mklink są dostępne od Windows Vista i Windows Server 2008. W Windows XP i Windows Server 2003 można używać

fsutil hardlink create <destination filename> <source filename>

Według msdn.microsoft , łącza symboliczne NIE są obsługiwane w systemach FAT16 / 32 i exFAT. Wygląda na to, że system Windows obsługuje je tylko z partycji NTFS lub do nich. Przyszłe systemy operacyjne Windows prawdopodobnie będą nadal obsługiwać mklink.

Więcej informacji na temat tej nowej funkcji można znaleźć w witrynie Microsoft TechNet , blogu Junfeng Zhang lub howtogeek.com .

cowgod
źródło
Byłoby miło dodać adres David Technet do wpisu w celu uzupełnienia.
Michael Pryor
notka strony, co to jest juntion (opcja / J)?
Roy Rico,
Łączenie katalogu typ dowiązania symbolicznego katalogu. support.microsoft.com/?kbid=205524
Lara Dougan
1
NTFS obsługuje łącza (o różnych nazwach) od Windows 2000, ale były one używane tylko wewnętrznie, zwłaszcza w udziałach domeny SYSVOL; niektóre narzędzia były dostępne do zarządzania nimi, ale nie były wbudowane; Vista wprowadziła narzędzie MKLINK i szerokie wykorzystanie linków w domyślnych instalacjach Windows.
Massimo,
2
Miło wspomnieć fsutilo odpowiedzi @ sascha poniżej, aby zapewnić rozwiązanie dla systemu Windows Server 2003.
Phrogz
30

W systemie Windows XP można użyć fsutil(wbudowanego w system operacyjny) do utworzenia twardego łącza

 fsutil hardlink create c:\foo.txt c:\bar.txt

Pamiętaj, że fsutil będzie działał tylko wtedy, gdy oba są na tym samym dysku

saschabeaumont
źródło
2
Dobra odpowiedź. Korzystam z WinXP / Win2003 i potrzebowałem mklink, ale to rozwiązało mój problem. Zwykle używam junction.exe z sysinternals, ale to obsługuje tylko katalogi iw tym przypadku potrzebowałem linku do pliku
s3v1
Szkoda, że ​​dowiązanie symboliczne nie może zostać utworzone przez fsutil, przynajmniej z tego, co przeczytałem gdzie indziej. To jest twardy link, a zatem nie jest odpowiedzią na pytanie.
Vlasec
10

Jedną małą rzeczą, jeśli używasz Powershell, mklink nie działa bezpośrednio, uruchom go w następujący sposób:

PS C:\d\eclipseInstalls> cmd /k mklink /D antRunner 3.4.2
symbolic link created for antRunner <<===>> 3.4.2
Dennis Williamson
źródło
1
Powinno to być / c, a nie / k, w przeciwnym razie cmd.exe nie zostanie zamknięty.
dangph
7

Użyj mklink lub skrzyżowania z Sysinternals (Microsoft). Wierzę , że mklink będzie działał w systemie Windows 2000 i nowszych, ale nie mogę znaleźć twardej dokumentacji na ten temat. połączenie dotyczy systemu Windows 2000 i nowszych wersji.

użytkownik2287
źródło
1
Polecenie mklink to Vista i Server 2008 i nowsze, jak wskazałem powyżej.
4

Nie widzi tego w żadnej odpowiedzi, ale linkd.exe (w zestawie Windows 2003 Zasobami tutaj ) pozwala na tworzenie węzłów, które dość dużo funkcji jako miękki / twardy linku robi w Linuksie. Połączenia są dostępne w systemie Windows 2000 i nowszych, więc po prostu skopiuj linkd.exe do systemu docelowego i powinien on działać.

romany
źródło
1
Zauważ, że `/ linkd` dotyczy tylko katalogów, a nie plików.
Phrogz
3

Jeśli nadal używasz starego systemu Windows, takiego jak XP, 2000, 2003 itp., Wypróbuj łącze NTFS .

Często go używam. Otrzymasz link do powłoki klikając opcję menu prawym przyciskiem myszy, aby utworzyć punkt połączenia. Doskonałe rzeczy.

Stewart Robinson
źródło
Działa to doskonale dla mnie w systemie Windows 2003 do tworzenia symbolicznego łącza do folderu na innym dysku. Dzięki!
Phil
Komentarz od anonimowego użytkownika, pierwotnie stworzony w odpowiedzi: „Uwaga: W przypadku XP do pracy, to musi być za pomocą partycji NTFS, FAT lub FAT32 nie See. Aumha.org/win5/a/ntfscvt.php dla kroków, w jaki sposób przekonwertować na NTFS. ”
squillman
2

Zobacz wpis TechNet . Uważam, że jest to funkcja Vista / Server 2008 i nowsze.


źródło
Fajne, nigdy wcześniej nie wiadomo o tej funkcji, dzięki za link, może być bardzo przydatne !!!
Marc-Andre R.
1

Aby upewnić się, że linki działają, możesz sprawdzić konfigurację swojego serwera. Łącza mogą być tworzone, ale jeśli nie użyjesz ustawienia symlinkevaluation w poniższym poleceniu, Twoje linki mogą nie działać.

fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

Zobacz także http://technet.microsoft.com/en-us/library/cc754077%28v=ws.10%29.aspx . Domyślnie aktywowane są tylko opcje lokalne.

użytkownik906489
źródło