Jaka jest różnica między punktami połączeń NTFS a łączami symbolicznymi?

140

Na wysokim poziomie, jedyna oczywista różnica pomiędzy punktów połączenia NTFS i dowiązania symboliczne jest to, że Skrzyżowania są w stanie być katalogi, natomiast Symlinks mogą także plików docelowych.

Jakie inne różnice między nimi istnieją?

(Uwaga, już widziałem to pytanie i to, czego szukam, jest nieco inne - to pytanie dotyczy listy za i przeciw, szukam zestawu różnic technicznych)

Billy ONeal
źródło

Odpowiedzi:

88

Dowiązania symboliczne mają większą funkcjonalność, podczas gdy skrzyżowania wydają się być cechą starszą ze względu na ich ograniczenia, ale implikacje dla bezpieczeństwa wynikające z tych ograniczeń są w szczególności powodem, dla którego węzeł może być preferowany w stosunku do łącza symbolicznego. Zdalne kierowanie sprawia, że ​​łącza symboliczne są bardziej funkcjonalne, ale także podnoszą ich profil bezpieczeństwa, podczas gdy skrzyżowania są bezpieczniejsze, ponieważ są ograniczone do ścieżek lokalnych . Tak więc, jeśli chcesz mieć łącze lokalne i możesz żyć z absolutną ścieżką, prawdopodobnie lepiej będzie, jeśli masz skrzyżowanie; w przeciwnym razie rozważ dowiązanie symboliczne dla dodatkowych możliwości.

wprowadź opis obrazu tutaj

** Stwierdzenie różnicy w szybkości / złożoności pochodzi z niezweryfikowanego stwierdzenia w Wikipedii na temat punktów ponownej analizy NTFS (dobra lektura). *


Inne porównania łączy 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 wymieniam powyżej.

Zaczerpnięte stąd (dobra lektura wprowadzająca)

wprowadź opis obrazu tutaj

Ze strony SS64 na MKLink

wprowadź opis obrazu tutaj


Uwagi dotyczące terminologii

Skrzyżowania są punktami powtórnymi (można je opisać jako dowiązania symboliczne)

Połączenia NTFS i łącza symboliczne NTFS naprawdę robią to samo w ten sam sposób (punkty ponownej analizy), oprócz wspomnianych powyżej różnic w sposobie ich przetwarzania. W rzeczywistości, technicznie rzecz biorąc, węzeł jest „dowiązaniem symbolicznym” w bardziej ogólnym znaczeniu tego słowa, a czasami dokumentacja może nazywać węzeł dowiązaniem symbolicznym, jak ma to miejsce w tym przypadku . W takich przypadkach „dowiązanie symboliczne” nie oznacza dowiązania symbolicznego NTFS, które różni się od skrzyżowania (patrz poniżej).

NTFS

Chociaż OP określa to, warto zauważyć, że „dowiązanie symboliczne” jest bardzo ogólnym terminem, który nie jest specyficzny dla NTFS. A więc, aby być konkretnym, to porównanie dotyczy połączeń NTFS z łączami symbolicznymi NTFS.

u8it
źródło
Punkty skrzyżowania i połączenia symboliczne są punktami ponownej analizy, ale punkty połączenia zdecydowanie nie są połączeniami symbolicznymi! Aha, a stół jest zły również pod jednym względem. Cel punktu połączenia musi istnieć podczas tworzenia, ale rzeczywiście może zostać później usunięty.
0xC0000022L
3
@ 0xC0000022L Tak, masz rację, jeśli mówisz, że połączenie NTFS nie jest łączem symbolicznym NTFS. Widzę, że moje sformułowanie może zostać źle zrozumiane, mówiąc to. Dokonam edycji, aby wyjaśnić, ale chodzi o to, że w tym kontekście „dowiązanie symboliczne” odnosi się do dowiązań symbolicznych NTFS, które są konkretnymi implementacjami bardziej ogólnej idei „dowiązania symbolicznego”, do której należą również połączenia. Czy skorzystałeś z linku, który zamieściłem? Nie jest powiedziane, że złącze NTFS jest dowiązaniem symbolicznym NTFS, ale termin „łącze symboliczne” może być użyty do opisania skrzyżowania.
u8it
w porządku, odnosząc się do koncepcji, może to być jeden ze sposobów myślenia o tym. Ale naprawdę myślę, że termin reparse point przenosi koncepcję do domu, ponieważ wyjaśnia znacznie więcej, co dzieje się w menedżerze obiektów NT i że ta koncepcja wykracza daleko poza to, jakie dowiązania symboliczne były na przykład w Uniksie (gdzie są to zwykłe pliki ze specjalną flagą). I tak, słyszałem, jak punkty połączeń były wyjaśniane jako „dowiązania symboliczne do katalogów”.
0xC0000022L
@ 0xC0000022L Ponadto nie widzę problemu, o którym wspominasz, dotyczącego nieprawidłowego stołu. Czy odnosisz się do cechy „Czy można wskazać nieistniejący cel”? Czy twierdzisz, że jest to błędne, przynajmniej podczas tworzenia skrzyżowania? Jeśli masz pewność, że tak jest w określonym środowisku (może dla Windows XP lub z powodu ustawień bezpieczeństwa), odnotuję to, ale z mojego doświadczenia i dokumentacji (i właśnie potwierdziłem w systemie Windows 10) może zawsze kieruj na nieistniejącą ścieżkę, nawet podczas tworzenia ... mogą istnieć ustawienia zabezpieczeń, które to ograniczają.
u8it
Skrzyżowania to nie dziedzictwo. Implementują punkty montowania (bind / volume), a nie dowiązania symboliczne. Kiedy ścieżka jest analizowana w otwartym, system zapamiętuje skrzyżowania, przez które przechodzą, w celu oceny względnych dowiązań symbolicznych, które przechodzą przez punkty montowania. Te przejścia muszą obsługiwać połączenie tak, jakby było to zwykły katalog, podczas gdy łącze symboliczne jest analizowane jako ścieżka docelowa. Na przykład, powiedz „C: \ junction” i „C: \ symbollink”, oba są celem „E: \ spam”, a względne dowiązanie symboliczne „E: \ spam \ eggs.txt” cele ”.. \ eggs.txt”. Następnie „C: \ junction \ eggs.txt” jest zamieniane na „C: \ eggs.txt”, a „C: \ symlink \ eggs.txt” zamienia się na „E: \ eggs.txt”.
Eryk Sun,
35

Miejsca, które uważam za najbardziej przydatne dla różnic:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

Postulat: Symlink to Junction w Windows, tak jak Symlink to Hardlink w Unix.

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

Systemy Windows 7 i Windows Vista obsługują dowiązania symboliczne zarówno do plików, jak i katalogów za pomocą narzędzia wiersza poleceń mklink. W przeciwieństwie do punktów połączenia, łącze symboliczne może również wskazywać na plik lub ścieżkę sieciową bloku komunikatów serwera (SMB). Ponadto implementacja dowiązań symbolicznych NTFS zapewnia pełną obsługę łączy między systemami plików. Jednak funkcja umożliwiająca łącza symboliczne między hostami wymaga, aby system zdalny również je obsługiwał, co skutecznie ogranicza ich obsługę do systemów operacyjnych Windows Vista i nowszych.

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

Dowiązanie symboliczne utworzone przez system Windows jest bardzo podobne do przyłączenia katalogów, ale w przeciwieństwie do przyłączenia katalogów może wskazywać na plik lub zdalny plik lub katalog sieciowy. Cel może być zdefiniowany jako ścieżka względem pozycji dowiązania symbolicznego lub ścieżka bezwzględna w bieżącej lub innej objętości. Należy również zauważyć, że dowiązania symboliczne do plików różnią się od dowiązań symbolicznych do katalogów, a cel musi być zgodny z definicją.

James Manning
źródło
1
Informacje dotyczące systemu Windows 7: msdn.microsoft.com/en-us/library/windows/desktop/ ...
Joshua Drake
14
Przyjęta odpowiedź ma już trzy lata, ale chciałbym zwrócić uwagę, że punkty węzłowe NFTS nie są porównywalne z łączami twardymi w Uniksie, jak wynika z cytowanego postulatu. Powinno to być oczywiste, ponieważ punkt połączenia nie może odwoływać się do pliku, ale łącze twarde może. NTFS obsługuje również dowiązania twarde (które różnią się od złączy), a te są mniej więcej porównywalne z dowiązaniami twardymi Unix.
@elgonzo Całkowicie się zgadzam. AFAIK, twarde łącze Unixa może odnosić się tylko do pliku, więc w ogóle nie wygląda jak połączenie katalogów NTFS.
Franklin Yu
20

Funkcjonalnie w oknach raz utworzonych nie ma żadnej różnicy. Istnieją jednak między nimi znaczne różnice w tym, co mogą zrobić. Połączenia mogą być używane tylko do tworzenia łączy do folderów na tym samym dysku lub na różnych dyskach, ale tylko wtedy, gdy dyski te znajdują się w systemie lokalnym (nie można utworzyć łącza węzłowego do folderu w sieci). Łącza symboliczne jednak nie mają takich samych ograniczeń. Dowiązania symboliczne mogą być używane do tworzenia łączy do plików lub folderów, a te pliki lub foldery mogą znajdować się w tym samym systemie (na tym samym dysku lub na różnych dyskach) lub w udziale sieciowym i mogą wykorzystywać symbolikę położenia względnego („\\ system2 \ foldera \ file.txt "," d: \ foldera \ file.txt "," \\ system2 \ foldera "," d: \ foldera "lub" d: \ foldera \ folderb .. "

Podsumowując: Punkty skrzyżowań są ograniczone tylko do folderów w systemie lokalnym, podczas gdy łącza symboliczne mogą tworzyć łącza do folderów lub plików dostępnych za pośrednictwem ścieżki UNC lub w systemie lokalnym z większą wszechstronnością w zakresie wyznaczania tych lokalizacji. Połączenia symboliczne są w zasadzie bardziej wszechstronnym zamiennikiem zarówno punktów połączenia, jak i połączeń twardych. Ponadto łącza symboliczne są kompatybilne z systemami Unix i Linux podczas tworzenia międzyplatformowego łącza UNC.

Mamy nadzieję, że to odpowiada na twoje pytanie w zadowalający sposób. Edytowano w celu poprawienia błędów typograficznych.

Kreator Techno
źródło
10

Rozszerzenie powłoki Link, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html , jest doskonałym narzędziem do tworzenia i przeglądania wielu rodzajów linków. Posiada również doskonałą dokumentację.

[Przy pełnej instalacji dodaje nową kartę właściwości, jeśli patrzysz na zaawansowany link. At dodaje także strzałki nakładane na ikony dla różnych typów linków - przewiń do sekcji FAQ, jeśli te się nie pojawiają; Windows obsługuje tylko trzynaście nakładek; pokazuje obejście rejestru. Przykład jego przydatności informacyjnej: bezskutecznie próbowano uzyskać uprawnienia do tego, co uważałeś za folder, ale w rzeczywistości było to dostarczone przez system łącze Junction, często używane do celów zgodności ze starszymi wersjami systemu Windows.]

Połączenia i dowiązania symboliczne działają zasadniczo identycznie, gdy są tworzone dla katalogu w systemie lokalnym.

Jednak:

W sieci działają inaczej. Ten link opisuje to zachowanie: /superuser/343074/directory-junction-vs-directory-symbolic-link

Jeśli myślisz o łączach Junction Links jako o „skrótach, które oszukują system operacyjny w kwestii lokalizacji”, będziesz miał dobre praktyczne porównanie ich użycia i tego, co je psuje. Główna różnica polega na tym, że jeśli kopiujesz łącza symboliczne lub skrzyżowania, kopiuje on cel, a raczej (podobnie jak skróty) jedynie plik zawierający wskaźnik. Podobnie jak w przypadku skrótów, można usuwać łącza symboliczne lub łączące bez usuwania docelowych plików / folderów. [Twarde łącza, plik jest usuwany tylko po usunięciu ostatniego łącza - w tym z kosza. Spójrz na znacznik properties w LSE dla któregokolwiek z tych linków, aby zobaczyć liczbę docelową lub referencyjną dla linków twardych.]

Twarde łącza lub skróty to jedyne typy łączy, które można przenosić bez skutków ubocznych, takich jak przerwanie lub skopiowanie całego celu. Przeniesienie celu zawsze zrywa łącza, chociaż można je łatwo zaktualizować na karcie właściwości (pokazanej za pomocą LSE) lub ponownie utworzyć, jeśli jest to skomplikowane, za pomocą LSE.

Tworzenie dowiązań symbolicznych wymaga uprawnień administratora, natomiast połączenia nie wymagają. To, plus rozległe, wewnętrzne wykorzystanie Junctions przez system operacyjny sugeruje, że Windows obsługuje je w intuicyjny, oczekiwany sposób. [Uważaj na nieoczekiwane efekty uboczne folderów systemowych (z doświadczenia z Win 10).]

[Niektóre funkcje związane z tworzeniem kopii zapasowych w Link Shell Extension są niezwykle przydatne - w skrócie, może on tworzyć kilka typów dających się aktualizować struktur dowiązań symbolicznych w standardowych folderach w celu wykonania kopii zapasowej.]

Glina
źródło
A Link Shell Extension wygląda na świetne narzędzie. Istnieje również powiązane, lekkie narzędzie o nazwie ln.exe ... nawet jeśli nie używasz, wiele się nauczysz, czytając prosty podręcznik użytkownika witryny.
u8it
Myślę, że twoja edycja z 2 kwietnia 2016 r. Uczyniła sprawę mniej jasną, Clay. Myślę, że miałeś na myśli coś takiego: „Główna różnica między tymi plikami a plikami„ skrótów ”polega na tym, że jeśli ... kopiuje cel, a nie tylko plik zawierający wskaźnik (co się dzieje, gdy kopiujesz skrót file) ”
Jon Coombs
4

Dowiązania symboliczne zostały wprowadzone w systemie Windows bardzo niedawno: począwszy od Vista.

Dowiązania symboliczne nie powinny być traktowane jako alternatywa dla istniejącej technologii „Reparse Point” systemu NTFS.

Microsoft wyjaśnia, że ​​jedynym celem łączy symbolicznych jest zapewnienie większej zgodności z systemem Unix.

MSDN: „ Dowiązania symboliczne zostały zaprojektowane w celu ułatwienia migracji i zgodności aplikacji z systemem UNIX. Firma Microsoft zaimplementowała swoje dowiązania symboliczne, aby działały tak samo jak łącza UNIX ”.

Vista jest także pierwszym systemem operacyjnym, który używa linków do własnego funkcjonowania. Aby zachować zgodność ze starszymi nazwami folderów, C:\Documents and Settingsjest teraz łącze doC:\Users .

Co ciekawe, chociaż Vista wprowadza dowiązania symboliczne, ta Documents and Settingssztuczka jest w rzeczywistości zwykłym " " połączeniem.

Philip
źródło
2
Ta odpowiedź nie mówi nic o różnicach między symbolicznymi dowiązaniami i połączeniami. (W związku z tym nie sądzę, aby to w ogóle dotyczyło tego pytania)
Billy ONeal
Począwszy od systemu Windows Vista łącze symboliczne zastępuje skrzyżowania (również, jak wiemy, oba są punktami ponownej analizy)
Aravind,
2

Oprócz doskonałej odpowiedzi od u8it:

Jeśli ktoś jest zainteresowany różnicą w zachowaniu w Eksploratorze plików Windows w Windows 10:

przeciągnij i upuść do katalogu docelowego:

  • symbolic link: przenosi symbolic linkdo katalogu docelowego
  • junction: przenosi original directorydo katalogu docelowego

prawy przycisk myszy + właściwości:

  • symbolic link: pokazuje właściwości skrótu
  • junction: pokazuje original directorywłaściwości folderu

kliknij lewym przyciskiem myszy w lewym panelu (drzewo katalogów):

  • symbolic link: wybiera plik original directory
  • junction: wybiera plik junction
Jinjinov
źródło
Tworzenie dowiązań symbolicznych wymaga uprawnień administratora, natomiast połączenia nie wymagają.
Jinjinov
Windows 10 w wersji 10.0.17134.1130: Przenoszenie węzła w eksploratorze przenosi tylko zawartość oryginalnego katalogu. Kliknięcie lewym przyciskiem dowiązania symbolicznego w drzewie nie powoduje wybrania oryginalnego katalogu.
SalgoMato