Odpowiedzi:
Skopiowanie pliku spowoduje skopiowanie zawartości. Jeśli więc zmodyfikujesz zawartość jednego pliku, nie będzie to miało wpływu na drugi.
Jeśli utworzysz hardlink, utworzy się plik wskazujący tę samą treść. Jeśli więc zmienisz zawartość jednego z plików, zmiana będzie widoczna na obu.
Twardy link to w zasadzie druga nazwa pliku dla tego samego pliku. Więc jeśli dowiązasz plik na stałe, będzie on tylko raz w systemie plików, a zatem zajmie miejsce tylko raz. Więc chcesz tego użyć, jeśli chcesz zaoszczędzić miejsce na dysku
W systemach plików unix każda nazwa pliku jest w rzeczywistości twardym linkiem do lokalizacji danych na dysku, zwanym i-węzłem. Jeśli utworzysz nowy twardy link do istniejącego pliku, nie zajmie on dodatkowego miejsca na dysku, ponieważ jest to po prostu wskaźnik do tych samych danych. Jeśli edytujesz dane jednym lub drugim linkiem (lub bezpośrednio edytujesz i-węzeł), oba pliki zostaną zmienione.
System rejestruje, ile twardych dowiązań ma każdy i-węzeł. Gdy liczba linków wynosi 0, plik nie może być osiągnięty, a dane są oznaczone jako bezpieczne do zastąpienia. Biorąc pod uwagę plik z 2 twardymi linkami, jeśli usuniesz którykolwiek z nich, dane nie zostaną usunięte. Tylko jeśli usuniesz oba, dane znikną.
Możesz zobaczyć liczbę i-węzłów plików, używając -i
przełącznika na ls
polecenie.
Z drugiej strony miękkie łącze wskazuje inny plik według jego nazwy. Jeśli przeniesiesz lub usuniesz oryginalny plik, link zostanie uszkodzony.
W odniesieniu do części pytania, która brzmiała: „dlaczego w ogóle miałbym używać twardych linków?”:
Pliki dowiązane na twardo (lub w tym przypadku pliki dowiązane miękko (symbolicznie) oferują użyteczny sposób posiadania jednego pliku wykonywalnego, który można przekształcić w maskaradę do różnych celów.
Oznacza to, że nazwa, pod którą wywoływany jest kod, może zostać zbadana w celu ustalenia, jakie opcje są dostępne do wykonania. Umożliwia to opracowanie i pakowanie jednego dużego fragmentu kodu ze wszystkimi wspólnymi funkcjami potrzebnymi do nieco innych celów. Z punktu widzenia użytkownika określenie „co” do uruchomienia (według nazwy) ogranicza wybory i prezentację do łatwiejszego do zarządzania podzbioru opcji.
Klasycznym przykładem jest LVM. W pewnym momencie HP-UX stosować twardych połączonych plików dla różnych plików wykonywalnych (np vgdisplay
, vgcreate
, vgextend
, itd. Dzisiaj, jak Linux, polecenia te są właściwie symboliczne (miękkie) Odnośniki do lvm
pliku wykonywalnego.