2011-10-05 03:28:14 +0000 2011-10-05 03:28:14 +0000
412
412

"złącze katalogowe" vs "łącze symboliczne katalogu"?

W kontekście NTFS:

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

/D Tworzy łącze symboliczne katalogu. Domyślnie jest to łącze symboliczne pliku. /H Tworzy łącze twarde zamiast łącza symbolicznego. /J Tworzy połączenie katalogowe. Link określa nową nazwę łącza symbolicznego.
Target określa ścieżkę (względną lub bezwzględną), do której odnosi się nowe łącze.

  1. Czy łącze katalogowe nie jest dokładnie tym samym, co łącze symboliczne katalogowe?

  2. Ponieważ “katalog” jest tak naprawdę tylko file, jaka byłaby różnica między katalogiem, który ma symboliczne łącze, a plikiem, który ma symboliczne łącze?

Odpowiedzi (3)

382
382
382
2011-10-05 03:43:56 +0000

Skrzyżowanie zdecydowanie nie jest tym samym, co symboliczne połączenie katalogowe, choć zachowują się podobnie. Główna różnica polega na tym, że jeśli patrzysz na zdalny serwer, złącza są przetwarzane na serwerze, a katalogowe linki symboliczne są przetwarzane na kliencie. Zobacz również komentarz Matthew na temat tego, że oznacza to, iż symboliczne linki na lokalnym systemie plików mogą wskazywać na zdalne systemy plików.

Załóżmy, że na maszynie o nazwie Alice miałeś umieścić punkt skrzyżowania c:\myjp oraz symboliczny link katalogowy c:\mysymlink, oba wskazujące na c:\targetfolder. Podczas używania Alicji nie zauważysz dużej różnicy między nimi. Ale jeśli używasz innej maszyny o nazwie Bob, wtedy punkt skrzyżowania

\Alice\c$\myjp będzie wskazywał na \Alice\c$\targetfolder

, ale symboliczny link

\Alice\c$\mysymlink będzie wskazywał na \Bob\c$\targetfolder

(Caveat: domyślnie, system nie podąża za symbolicznymi linkami na zdalnych woluminach, więc w większości przypadków drugi przykład spowoduje, że albo “Plik nie został znaleziony” albo “Symboliczny link nie może być podążany, ponieważ jego typ jest wyłączony. ”)

Różnica między łączem symbolicznym do katalogu a łączem symbolicznym do pliku polega po prostu na tym, że jedno reprezentuje katalog, a drugie plik. Ponieważ cel łącza nie musi istnieć w momencie jego tworzenia, system plików musi wiedzieć, czy powiedzieć aplikacji, że jest to katalog, czy nie.

Należy również zauważyć, że tworzenie łącza symbolicznego wymaga specjalnych uprawnień (domyślnie dostępnych tylko dla podwyższonych procesów), podczas gdy tworzenie połączenia wymaga jedynie dostępu do systemu plików.

65
65
65
2015-10-22 19:03:16 +0000

Złożona rozmowa boli mózg - lubię wykresy:

Załóżmy, że każdy MyLink jest łącznikiem symbolicznym, a każdy MyJunc jest łącznikiem wskazującym na Target as created.

np.

mklink /D MyLink C:\T_Dir dla utworzenia symbolicznego połączenia z katalogiem docelowym

mklink /J MyJunc C:\T_Dir dla utworzenia połączenia z katalogiem docelowym

Gdzie składnia jest mklink [/J,/D] [link path] [target path] jak wpisano na maszynie lokalnej

  • *
link path | target path | When accessed ..
              | | (locally) | (remotely)
              | | |
C:\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
C:\MyJunc | C:\T_Dir | C:\T_Dir | [leads to remote]
              | |
\Svr\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
\Svr\MyJunc | C:\T_Dir | ***Must create and point local***
              | |
C:\MyLink | \Sv2\T_Dir | \Sv2\T_Dir | Error*1
C:\MyJunc | \Sv2\T_Dir | ***Error - Must point local***
              | |
\Svr\MyLink | \Sv2\T_Dir | Error*1
\Svr\MyJunc | \Sv2\T_Dir | ***Must create link using target device***

Błąd :*1 - Jeśli odblokujesz dostęp do zdalnych symbolicznych połączeń na maszynie lokalnej, to będzie działać … ale tylko na maszynie lokalnej, gdzie jest odblokowana

55
55
55
2018-02-02 16:30:06 +0000

Połączenia symboliczne mają większą funkcjonalność, podczas gdy skrzyżowania wydają się być niemal odziedziczoną cechą ze względu na ich ograniczenia, ale implikacje tych ograniczeń dla bezpieczeństwa są właśnie powodem, dla którego skrzyżowanie może być preferowane zamiast połączenia symbolicznego. Docelowanie zdalne sprawia, że łącza symboliczne są bardziej funkcjonalne, ale również podnosi ich profil bezpieczeństwa, podczas gdy skrzyżowania mogą być uważane za bezpieczniejsze, ponieważ są ograniczone do ścieżek lokalnych. Jeśli więc szukasz połączenia lokalnego i możesz żyć z bezwzględną ścieżką, prawdopodobnie lepiej jest mieć skrzyżowanie; w przeciwnym razie rozważ symboliczne połączenie ze względu na jego dodatkowe możliwości.

*** Stwierdzenie o różnicy w szybkości/złożoności pochodzi z niezweryfikowanego stwierdzenia w wpisie Wikipedii w NTFS reparse points (dobra lektura). *

  • *

Pozostałe porównania linków NTFS

Oto kilka innych porównań na ten temat, ale mogą one być mylące przy rozważaniu skrzyżowań, ponieważ nie wymieniają korzyści, które wymieniłem powyżej. Weź stąd (dobre wprowadzenie)

Od strony SS64 na MKLink


Komentarze dotyczące terminologii

Skrzyżowania są linkami symbolicznymi

Skrzyżowania i linki symboliczne naprawdę robią to samo (reparse points), oprócz wyżej wymienionych różnic w sposobie ich przetwarzania. W rzeczywistości, technicznie rzecz biorąc, Junction jest ogniwem symbolicznym, a czasami dokumentacja może nazwać Junction ogniwem symbolicznym, jak to ma miejsce tutaj . Tak więc, jest to tylko coś, czego należy być świadomym jeśli chodzi o terminologię.

NTFS

Mimo, że OP to określa, warto zwrócić uwagę, że “łącze symboliczne” jest bardzo ogólnym terminem, który nie jest specyficzny dla NTFS. Tak więc, aby być specyficznym, to porównanie jest o NTFS Junctions vs. NTFS Symbolic Links.