Co to jest twarde łącze w systemie Linux?


9

Szukałem i próbuję zrozumieć różnicę między linkiem twardym a linkiem symbolicznym (link miękki).

Odkryłem, że ten link jest całkiem przydatny. Ale nadal nie jestem zbyt jasny. Rozumiem, że miękki link nie jest kopią oryginalnego pliku, ale czy twardy link jest kopią, czy nie?

Odpowiedzi:


15

Aby użyć analogii z dostarczaniem poczty, dowiązanie symboliczne jest czymś w rodzaju adresu przekierowującego ... kiedy coś próbuje otworzyć dowiązanie symboliczne, otwiera przechowywany tam „plik” (choć nie dosłownie plik) i widzi, że powinien zamiast tego spojrzeć na plik o innej nazwie, więc zamiast tego otwiera inny plik.

Twardy link przypomina raczej posiadanie dwóch adresów dla tego samego miejsca. (Oczywiście nie jest to możliwe w świecie fizycznym). Gdy coś próbuje odczytać nazwę pliku (adres), otrzymuje ten sam plik fizyczny (lokalizację).

Tak więc twardy link nie jest kopią, ponieważ plik jest przechowywany tylko raz (ale z wieloma nazwami). Ale zachowuje się bardzo podobnie do kopii, ponieważ można uzyskać dostęp do tych samych informacji z dwóch nazw plików.


+1 za bardzo miłą analogię, która uprościłaby mi sprawę, gdy próbowałem to opanować.
John Gardeniers,

1
+1, ale dwa drobne szczegóły: 1) Możliwe jest posiadanie wielu adresów dla tego samego miejsca w prawdziwym świecie, po prostu niezbyt często. 2) Być może najważniejsza różnica pomiędzy twardą łącza i kopią jest to, że jeśli masz /fooi /bar, zmieniając /foorównież zmienić /bar, jeśli są hardlinki (bo są dwie nazwy dla tego samego pliku), ale nie, jeśli są kopie (ponieważ są to dwa całkowicie niezależne pliki).
Dave Sherohman,


3

Utworzenie twardego łącza oznacza, że ​​ten sam plik pojawia się w dwóch różnych miejscach. Plik jest tak naprawdę tylko odniesieniem do zestawu bloków danych na dyskach, więc twardy link dodaje kolejne odniesienie. Pliki rzadko są naprawdę usuwane; odniesienia zostały właśnie usunięte, więc nie można uzyskać dostępu do danych. Dlatego po usunięciu pliku utworzonego jako twardy link drugi oryginalny plik pozostaje i na odwrót.

Z drugiej strony dowiązanie symboliczne to kierunek dostępu do pliku o określonej nazwie. Mówi wszystkim programom: „Jeśli chcesz użyć tego pliku, jest tam”. Dlatego jeśli usuniesz cel dowiązania symbolicznego, dowiązanie symboliczne zostanie zerwane. A jeśli usuniesz link, cel nie zostanie zmieniony.


2

Plik w systemie * nix składa się z dwóch części. jedna część danych, a druga to i-węzeł. i-węzeł przechowuje meta (informacje istotne dla danych, takie jak lokalizacja, w której są przechowywane na HDD) informacje. Twarde łącze tworzy dokładną kopię tego i-węzła. Podczas gdy sym link tworzy i-węzeł, który wskazuje na i-węzeł rzeczywistego i-węzła. Zatem dane i-węzłów w dowiązaniu twardym są takie same jak dane docelowe, ale różne dane w dowiązaniu sym. Krótko mówiąc, linki sym i twarde linki różnią się zawartością danych i-węzłów, a nie danych pliku. Tak rozumiem różnicę między łączem sym a twardym. Początkowo miałem trudności ze zrozumieniem tego, ponieważ jest to coś bardziej twórczego i nie jestem programistą. Och, kompetentni, proszę mnie poprawić, jeśli się mylę.


3
„Katalog” w * nix to lista nazw plików i numerów i-węzłów. Dowiązania twarde to dwa wpisy katalogu, które mają ten sam numer i-węzła, a zatem odnoszą się do dokładnie tego samego i-węzła, a nie do kopii i-węzła. Dowiązanie symboliczne to pozycja katalogu, która wskazuje na inną pozycję katalogu (według nazwy), a nie na konkretny i-węzeł. (Ok, faktycznie ma i-węzeł, ale ten i-węzeł odnosi się do wpisu do katalogu, a nie do pliku danych).
Randy Orrison
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.