Nie, twardy link jest zupełnie inny. Miękki link jest bliższy skrótowi Windows (chociaż istnieją istotne różnice, dowiązania symboliczne są bardziej podobne do skrótów Windows niż twarde). Twardy link to inna rzecz, której prawie nigdy nie będziesz potrzebować.
W skrócie, za pomocą tego polecenia tworzony jest miękki link:
ln -s foo bar
Jeśli następnie uruchomisz ls -l
, zobaczysz:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Te ->
środki, które bar
znajduje się link do foo
. Tak więc otwarcie bar
, na przykład za pomocą edytora tekstu, faktycznie otworzy osobny plik foo
. Jednak usunięcie bar
spowoduje jedynie usunięcie skrótu, nie wpłynie na plik foo
.
Natomiast twarde linki są tworzone za pomocą tego polecenia:
ln foo bar
Jeśli teraz uruchomisz ls -l
, nic nie wskazuje na związek między plikami:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Ale - i to jest bardzo ważne - to w rzeczywistości ten sam plik . Pliki w systemach plików Unix są przechowywane przy użyciu i- węzłów ; i-węzeł to po prostu sposób, w jaki system plików odwzorowuje nazwę pliku na określoną lokalizację na fizycznym dysku twardym. Tak więc twarde linki to pliki, które wskazują ten sam i-węzeł, co ich cel. Innym sposobem na umieszczenie tego jest to, że wszystkie pliki są w rzeczywistości twardymi linkami wskazującymi na ich i-węzły. Utworzenie twardego łącza do pliku powoduje utworzenie nowego wskaźnika (pliku) w systemie plików, który wskazuje ten sam i-węzeł. Każdy i-węzeł może mieć wiele plików wskazujących go lub jeden lub żaden.
Aby to lepiej zrozumieć, użyj, ls -i
która pokazuje i-węzeł powiązany z plikiem. Utwórzmy miękki link i twardy link i zobaczmy, co się stanie:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Teraz sprawdź ich i-węzły:
Jak widać powyżej, oba mają foo
i HardLinkToFoo
ten sam i-węzeł (16648029), podczas gdy SoftLinkToFoo ma inny (16648036).
Co się stanie, jeśli zmiana nazwy foo
z mv foo bar
?
Kolor czerwony oznacza zerwane miękkie łącze, którego nie można już znaleźć celu. Wynika to z faktu, że miękkie linki wskazują nazwę pliku, a nie jego i-węzeł. Zauważ, że pomimo zmiany nazwy, i-węzeł pozostaje taki sam, więc hardlink jest w porządku, nadal działa.
Podsumowując, twarde linki są w rzeczywistości dwoma przejawami tego samego pliku; są wskaźnikami do tej samej sekcji dysku. Miękkie linki to tylko skróty. Aby przyjąć analogię ze świata rzeczywistego, twarde linki są jak dwa różne numery telefonów dla tej samej linii telefonicznej, a miękkie linki są jak dwie różne linie telefoniczne w tym samym domu.