Jaka jest różnica między twardymi dowiązaniami NTFS a połączeniami katalogów?


79

Tytuł mówi wszystko ... jaka jest różnica? Kiedy używam jednego, a kiedy drugiego?

Dodano: Należy pamiętać, że punkty połączenia , twarde łącza i dowiązania symboliczne (miękkie) to trzy osobne rzeczy w systemie plików NTFS.


2
Według dokumentacji Microsoft istnieją trzy odrębne kategorie: Twardy link: msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Junction (soft-link): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Link symboliczny: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx .
Josip Medved

Odpowiedzi:


33

Pliki danych NTFS są przechowywane ze wszystkimi atrybutami jako „i-węzeł” z identyfikatorem, a nazwy plików wskazują i-węzeł. Wszystkie pliki mają jeden + hardlink. niektóre narzędzia mogą tworzyć dodatkowe nazwy (dowiązania twarde), które wskazują ten sam i-węzeł, który ma licznik liczby nazw wskazujących na to. Jeśli liczba spadnie do zera, system operacyjny usuwa plik, i-węzeł.

Specjalne narzędzia, takie jak LN, mogą tworzyć dodatkowe nazwy plików, które wskazują na istniejące i-węzły, używając nazwy pliku, która wskazuje na nie. Pamiętaj, że wszystkie atrybuty pliku, w tym daty i godziny, są przechowywane z i-węzłem, a nie nazwą pliku.

(Dodatkowe) twarde linki są przydatne, gdy chcesz, aby różne nazwy wskazywały te same dane, odczytywały lub zapisywały. Oszczędzają miejsce i koszty ogólne. Jednak zamykają programy, które przyjmują różne nazwy, wskazują na różne dane. np. jeśli zastąpisz odniesienia do zduplikowanych plików twardymi linkami do jednego pliku, usuniesz wszelkie posiadane kopie zapasowe! System operacyjny Windows to jeden program, który zakłada, że ​​różne nazwy wskazują różne zestawy bitów.

Linki twarde muszą znajdować się na tym samym woluminie fizycznym i logicznym.

Są przydatne do:

  • skrócenie długości ścieżek, ponieważ system Windows obsługuje tylko 256 znaków.

  • zmniejszenie miejsca do przechowywania duplikatów plików danych - np. możesz mieć wiele kopii zapasowych partycji z wieloma pełnymi drzewami katalogów, ale z dowiązaniami twardymi dla plików, które nie zmieniły się od czasu poprzedniej kopii zapasowej.

Punkty połączeń są bardziej chaotyczne i używają punktów ponownej analizy (których nie rozumiem). Mogą wskazywać różne woluminy fizyczne lub logiczne, ale muszą znajdować się na tym samym komputerze. Najwyraźniej można ich używać jako dowiązań symbolicznych do katalogów, umożliwiając drugą nazwę dla tego samego miejsca docelowego, ale ograniczoną do jednego komputera, a nie tylko jednego woluminu.

Przydatne do zmniejszania długości ścieżek lub uproszczenia pracy z kilkoma programami z zakodowanymi nazwami katalogów.

Te same zastrzeżenia! Wiele programów zakłada różne nazwy = różne pliki.

A potem są linki symboliczne (które mogą przechodzić przez sieci), skróty i PIF i .....

Również niektóre informacje od samego Microsoft :

Zasadniczo twierdzą, że używają twardych łączy tylko dla plików w tym samym woluminie (litera dysku) i punktów połączenia tylko dla katalogów na tym samym komputerze (mogą obejmować różne woluminy lokalne).


1
Czy dowiązanie symboliczne działa na poziomie dysku twardego (NTFS), czy działa na poziomie systemu operacyjnego Windows?
IsmailS,

48

Szybkie definicje:

Łącze symboliczne: Łącze do pliku lub katalogu na tym samym lub innym woluminie (litera dysku) lub nawet do zdalnego pliku lub katalogu (przy użyciu UNC na ścieżce).

Twardy link: tylko link do pliku na tym samym woluminie (litera dysku). Każdy plik (dane pliku) ma co najmniej 1 stały link (nazwę pliku). Usunięcie wszystkich twardych linków powoduje skuteczne usunięcie pliku.

Połączenie: Łącze do katalogu na tym samym lub innym woluminie (litera dysku), ale nie do katalogu zdalnego.


Detale:

Zakładając, że pracujesz z woluminami NTFS w systemie Windows Vista / 7, możesz skorzystać z narzędzia wiersza poleceń, MKLINK aby utworzyć wszystkie trzy typy łączy:

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.

Dowiązania symboliczne : Dowiązanie symboliczne to obiekt systemu plików, który wskazuje na inny obiekt systemu plików (np. Plik / katalog).

  • MKLINKmoże służyć do tworzenia dowiązań symbolicznych. Użycie /Dparametru tworzy symboliczne łącze do katalogu. MKLINK nie sprawdza, czy celem jest plik czy katalog, a nawet czy cel istnieje! Oznacza to, że możesz potencjalnie utworzyć nieprawidłowe łącza, takie jak symboliczne łącze katalogu do pliku lub symboliczne łącze do nieistniejącego pliku / katalogu.

  • Łącza symboliczne mogą być łączami bezwzględnymi lub względnymi. Łącza bezwzględne to łącza, które określają każdą część nazwy ścieżki, natomiast łącza względne są określane w odniesieniu do miejsca, w którym specyfikatory łącza względnego znajdują się na określonej ścieżce.

  • Bezwzględne dowiązania symboliczne mogą wskazywać na pliki / katalogi na tym samym lub innym wolumenie, a także na zdalny plik lub katalog przy użyciu ścieżki UNC. Względne dowiązania symboliczne są jednak ograniczone do jednego woluminu.

  • Podwyższone uprawnienia są wymagane do utworzenia dowiązania symbolicznego, ale po utworzeniu podwyższonych uprawnień nie są wymagane do usunięcia dowiązania.

Dowiązania twarde : Dowiązanie twarde to reprezentacja systemu plików, w której więcej niż jedna ścieżka odwołuje się do jednego pliku.

  • MKLINKpozwala na tworzenie twardych dowiązań (przy użyciu /Hparametru) tylko plików (nie katalogów). Twardy link można utworzyć tylko z pliku w tym samym woluminie.

  • Plik z wieloma twardymi linkami jest faktycznie usuwany tylko wtedy, gdy wszystkie twarde linki zostaną usunięte, tzn. Liczba linków osiągnie zero. Tak naprawdę każdy utworzony plik ma przynajmniej jeden stały link do niego, niezależnie od tego, czy go używasz, MKLINKczy nie.

  • Wszelkie zmiany w tym pliku są natychmiast widoczne dla aplikacji, które uzyskują do niego dostęp za pośrednictwem linków, które go odwołują. Jednak rozmiar pozycji katalogu i informacje o atrybucie są aktualizowane tylko dla łącza, przez które wprowadzono zmianę.

  • Zauważ, że atrybuty pliku są odzwierciedlane w każdym twardym dowiązaniu do tego pliku, a zmiany atrybutów tego pliku są przenoszone na wszystkie dowiązania twarde. Na przykład jeśli odłączysz atrybut tylko do odczytu w twardym dowiązaniu, aby usunąć ten konkretny dowiązanie twarde, a istnieje wiele twardych dowiązań do rzeczywistego pliku, musisz ponownie ustawić atrybut tylko do odczytu w pliku z jednego z pozostałych twardych linków, aby przywrócić plik i wszystkie pozostałe twarde linki z powrotem do stanu tylko do odczytu.

Połączenia : Złącze (zwane także łączem miękkim) różni się od łącza twardego tym, że obiekty pamięci, do których się odwołuje, są oddzielnymi katalogami, a złącze może łączyć katalogi znajdujące się w różnych woluminach lokalnych na tym samym komputerze. W przeciwnym razie skrzyżowania działają identycznie jak twarde łącza. Połączenia są realizowane za pośrednictwem punktów ponownej analizy.

  • MKLINKpozwala na utworzenie skrzyżowania (przy użyciu /Jparametru) katalogu (a nawet plików, choć prawdopodobnie powinno to zostać uznane za nieprawidłowe łącze).

  • Połączenie można uznać za odpowiednik dowiązania twardego dla dowiązania symbolicznego do katalogu. Łącza łączącego nie można utworzyć do katalogu zdalnego, ale można go utworzyć w katalogu na tym samym / innym woluminie.


Bibliografia:

[1] Twarde linki i połączenia: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] Tworzenie dowiązań symbolicznych: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] „połączenie katalogu” vs „symboliczne łącze do katalogu”?


9

Twardy link to po prostu inna nazwa pliku. Jeśli masz plik o nazwie A.txt i link L.txt, po usunięciu A.txt nadal będziesz mieć dostęp do jego danych za pośrednictwem L.txt. Plik zniknie tylko wtedy, gdy oba zostaną usunięte.

Z drugiej strony masz tzw. Soft-link (połączenie, jeśli jest to folder lub symboliczne, jeśli jest to plik). W takim przypadku po usunięciu A.txt plik naprawdę zniknął. Usunięcie L.txt nie ma żadnego wpływu na plik.

Dowiązań twardych można używać tylko na tej samej partycji co plik źródłowy, a dowiązań miękkich można używać na partycjach.

Plik PS i folder są w większości wymienne, jeśli chodzi o system plików NTFS.


3
Przepraszamy, połączenia i miękkie linki to nie to samo dla NTFS. :(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx Cytat: „Skrzyżowanie (zwane także miękkim linkiem)”
Josip Medved,

3
Istnieje jednak dalsze rozróżnienie między łączeniem (inaczej miękkim łączem) a łączem symbolicznym, ale nie wdałem się tutaj w szczegóły. Dla zainteresowanych szczegóły można znaleźć w dokumentacji systemu Windows pod adresem msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx i msdn.microsoft.com/en-us/library/aa363878%28VS. 85% 29.aspx .
Josip Medved

1
Od systemu Windows Vista istnieją zarówno połączenia NTFS (można wskazać tylko na katalogach), jak i dowiązania symboliczne w stylu Unix (mogą wskazywać dosłownie na wszystko).
grawity

0

Twardy link: działa tylko dla tego samego woluminu.
Łączenie: dowolny wolumin lokalny
Symboliczny: wolumin lokalny lub ścieżka UNC

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Bonusowa rozmowa

Windows tworzy połączenia i dowiązania symboliczne do celów AppCompat; dla tych źle napisanych aplikacji, które myślą:

  • C: \ Users \ All Users
  • C: \ Users \ Default User

są ważne.

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

To samo dotyczy folderu profilu użytkownika, w przypadku aplikacji, które oczekują, że foldery z ery systemu Windows XP będą nadal istnieć:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

1
i staje się jeszcze bardziej szalony w nieanglojęzycznych instalacjach systemu Windows, gdy dostajesz JESZCZE WIĘCEJ dowiązań / skrzyżowań, ponieważ niektórzy mogą, ale nie muszą wiedzieć, że Windows do XP faktycznie miał lokalne nazwy, które łatwo mogą zepsuć skrypty lub samouczki wykonane dla innych języków. Vista zabiła to i zamiast tego używa zlokalizowanych nazw DISPLAY, więc rzeczywiste ścieżki są takie same we wszystkich językach, ale z tego powodu zlokalizowane okna mają nawet więcej linków niż angielskie
My1

-1

Aby odpowiedzieć programowo:

Twardy link: shared_ptr <>. Zawsze istnieje.

Miękki link: słaby_ptr <>. Obowiązuje tylko wtedy, gdy istnieje inny link stały.


To jest łatwe. :) Pytanie dotyczyło twardych linków vs. skrzyżowań. ;)
Vilx-
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.