Jaka jest różnica między łączem miękkim (symbolicznym) a łączem twardym?

59

Słyszę, że możesz teraz tworzyć również miękkie linki w Vistę . Jaka jest różnica między linkiem miękkim (symbolicznym) a linkiem twardym w systemie UNIX / Linux / Vista?

Czy są zalety używania jednego nad drugim? A może służą tylko dwóm odrębnym celom?

Aaron K.
źródło
W praktyce odpowiedź brzmi: prawie zawsze chcesz użyć dowiązania symbolicznego. Rozumiem, że twarde linki służą głównie do oszczędzania miejsca, szczególnie w takich rzeczach, jak migawki i przyrostowe kopie zapasowe, gdzie kolejne migawki zawierają wiele identycznych plików, których zmiana w przyszłości jest mało prawdopodobna.
Ryan Thompson,
Czy należy to przenieść na systemy Unix i Linux? Zobacz unix.stackexchange.com/questions/9575/…
ripper234,
2
Nie, nie należy go migrować. Ponieważ pierwotne pytanie nie dotyczy wyłącznie Uniksa - system Windows obsługuje twarde i miękkie linki.
Richard West
1
niektóre aplikacje się zepsują (a czasem źle), jeśli użyjesz miękkiego linku - szczególnie w przypadku katalogów: miękki link zostanie zdereferencjonowany, a kiedy to będzie, a aplikacja porówna się, powiedzmy /var/opt/log/appname(jego config) z dereferencyjną wartością, powiedzmy /apps/appname/logs, będzie narzekać to nie pasuje. Rozwiązaniem tego problemu jest użycie mount --bind(w systemie Linux) do ponownego zamontowania oryginalnego katalogu w nowej lokalizacji.
warren
1
Żeby wyjaśnić kilka punktów zawartych w innych odpowiedziach ... Windows może tworzyć twarde linki (choć uważam, że zachowują się nieco inaczej niż w Uniksie). Spójrz na komendę mklink i argument h. (Jeśli wpiszesz mklink w wierszu poleceń, zobaczysz plik pomocy, który zawiera podstawową składnię.)

Odpowiedzi:

68

Łącze twarde tradycyjnie dzieli te same struktury systemu plików (i-węzeł w unixspeak), podczas gdy łącze miękkie to przekierowanie nazwy ścieżki.

  • Dowiązania twarde muszą znajdować się w tym samym systemie plików, dowiązania miękkie mogą przechodzić między systemami plików.
  • Pliki dowiązane pozostają połączone, nawet jeśli przenosisz któryś z nich (chyba że przenosisz jeden do drugiego systemu plików uruchamiającego mechanizm kopiowania i usuwania). Pliki z linkami miękkimi ulegają awarii, jeśli przenosisz cel (oryginał), a czasem po przeniesieniu linku (Czy użyłeś ścieżki bezwzględnej czy względnej? Czy to nadal jest poprawne?).
  • Pliki dowiązane są równe, podczas gdy oryginał jest wyjątkowy w przypadku dowiązań miękkich, a usunięcie oryginału usuwa dane. Dane nie znikają, dopóki nie zostaną usunięte wszystkie dowiązania twarde.
  • Softlinks może wskazywać na dowolny cel, ale większość systemów operacyjnych / plików nie zezwala na katalogowanie dowiązań twardych, aby zapobiec cyklom na wykresie systemu plików (z wyjątkiem pozycji .i ..w katalogach unix, które są dowiązaniami twardymi).
  • Miękkie łącza mogą wymagać specjalnego wsparcia ze strony narzędzi do chodzenia po systemie plików. Czytaj na readlink (2) .

(Niektóre szczegóły przypomniały mi mat1t . Dzięki.)

dmckee
źródło
Ładne podsumowanie. Każdy użytkownik Linuksa powinien to wiedzieć (chociaż twarde linki są bardzo rzadkie).
Artem Russakovskii
Odpowiedź dmckee zawiera szczegółowe informacje na temat semantyki. Jedyne szczegóły, które chciałbym dodać, to wyjaśnienie tego, co dzieje się na wyższym poziomie: miękki link jest sam w sobie plikiem, podczas gdy twardy link to pozycja katalogu wskazująca na istniejące dane. Wikipedia zawiera więcej szczegółów na temat twardych i miękkich linków.
Mr. Shiny and New 安 宇
niezłe podsumowanie, bardzo przydatne
Razique
9
Należy również zauważyć, że twarde linki udostępniają uprawnienia, a także informacje o własności.
Corey S.,
6
Dodaj, że 2 linki dowiązania są tworzone automatycznie z nazwą. i .. za każdym razem, gdy tworzysz folder. W Linuksie są to jedyne prawidłowe dowiązania twarde do folderu.
Mircea Vutcovici,
10

Podsumowując, link symboliczny / krótki działa jako skrót do lokalizacji pierwszego pliku, natomiast link twardy to skrót do pliku na dysku.

Jeśli usuniesz cel miękkiego łącza, wówczas miękkie łącze przestanie działać, ale jeśli usuniesz jedną kopię twardego łącza, plik pozostanie na dysku, dopóki wszystkie twarde łącza do niego nie zostaną usunięte. W efekcie wszystkie nazwy plików są dowiązaniami twardymi do pliku na dysku.

Istnieją również pewne ograniczenia, np. Nie sądzę, że można tworzyć twarde linki folderów, ale można tworzyć miękkie linki z nich. Miękkie linki mogą również wskazywać pliki / foldery na różnych dyskach i partycjach, podczas gdy twarde linki nie mogą.

Matthew Steeples
źródło
-1

System MS Windows zawsze używa miękkich linków (skrótów). To znaczy, że link działa po prostu jako skrót wskazujący lokalizację pliku. Jeśli położenie oryginału zostanie przeniesione, link się zepsuje. Ponadto czynności wykonywane przez skrót (takie jak zmiana uprawnień lub zmiana nazwy skrótu) nie wpływają na rzeczywisty plik.

Pytanie zaczęło się od błędnego założenia. Tak, Vista używa softlinków, ale nie jest nowy, to znaczy skrót MS.

Reginald Kincaid
źródło
3
Nie, NTFS obsługuje hardlinks i ma od NTFS 3.1 (aktualna wersja od XP / 2003).
Chris S