Rozumiem, że twarde linki zawierają kopię oryginalnego pliku i że mógłbym usunąć plik z twardym dowiązaniem w jednym katalogu i nadal istniałby w innym katalogu.
Jeśli tak, to dlaczego miałbym w ogóle używać twardych linków? Dlaczego nie mieć dwóch oddzielnych plików?
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
źródło
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 nals
polecenie.Z drugiej strony miękkie łącze wskazuje inny plik według jego nazwy. Jeśli przeniesiesz lub usuniesz oryginalny plik, link zostanie uszkodzony.
źródło
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 dolvm
pliku wykonywalnego.źródło