Czym są dowiązania?
Dowiązania w systemie Linux to specjalne pliki, które wskazują na inne pliki lub katalogi. Można je porównać do skrótów w systemie Windows, ale w Linuxie działają na niższym poziomie systemowym i mają więcej możliwości. Wyróżniamy dwa główne typy dowiązań:
- Dowiązania symboliczne (miękkie) - To plik, który zawiera ścieżkę do innego pliku lub katalogu.
- Dowiązania twarde - To alternatywna nazwa dla istniejącego pliku – oba wskazują na te same dane na dysku.
Dowiązanie symboliczne
Dowiązanie symboliczne (symbolic link, symlink, soft link) to specjalny plik, który przechowuje ścieżkę tekstową do innego pliku lub katalogu. System operacyjny, kiedy próbujesz otworzyć dowiązanie, czyta tę ścieżkę i próbuje ją zinterpretować jako lokalizację oryginału.
Pełna ścieżka vs ścieżka względna
Podczas tworzenia symlinków, bardzo ważne jest, jaką ścieżkę podajesz jako cel (oryginał) – bo to właśnie ta ścieżka zostanie zapamiętana w dowiązaniu.
- Przykład z pełną ścieżką (absolutną):
ln -s /home/adminek/plik.txt ~/dokumenty/skrot-do-pliku- Dowiązanie zawiera dokładną ścieżkę do pliku.
- Działa niezależnie od tego, gdzie fizycznie znajduje się dowiązanie.
- Przykład ze ścieżką względną:
cd ~/skroty ln -s ../dokumenty/plik.txt skrot.txt- Dowiązanie zapisuje ścieżkę jako
../dokumenty/plik.txt. - Działa tylko wtedy, gdy struktura katalogów i położenie dowiązania względem pliku źródłowego pozostaje niezmieniona.
- Dowiązanie zapisuje ścieżkę jako
A tak wygląda dowiązanie symboliczne przy użyciu ls -l.

Problem: "Dowiązanie nie działa"
Jeśli przeniesiesz dowiązanie symboliczne do innego katalogu bez zmiany jego ścieżki, to:
- przy ścieżce względnej → symlink się „zepsuje”, bo odwołuje się do niewłaściwej lokalizacji;
- przy ścieżce absolutnej → nadal działa poprawnie.
Dowiązanie twarde
Dowiązanie twarde to dodatkowa nazwa (ścieżka) dla tego samego pliku fizycznego na dysku. Nie jest to skrót ani odrębny plik, jak w przypadku symlinków – to pełnoprawny alias.
Oba pliki (oryginał i dowiązanie) wskazują dokładnie na ten sam i-węzeł.
Czym jest i-węzeł (inode)?
https://sjarecki.pl/art/i-wezly-inode-w-linuxie
A w skrócie... W systemach plików Unix/Linux (np. ext4, xfs), każdy plik jest reprezentowany przez i-węzeł:
- I-węzeł to struktura danych w systemie plików, która zawiera:
- informacje o pliku: właściciel, uprawnienia, rozmiar, czas utworzenia/modyfikacji itd.
- wskaźniki do bloków danych na dysku (czyli gdzie fizycznie są zapisane dane)
- Co nie znajduje się w i-węźle?
- Nazwa pliku. Nazwa jest częścią katalogu (czyli osobnego pliku), który mapuje nazwy na numery i-węzłów.
Jak działa dowiązanie twarde?
Kiedy tworzysz twarde dowiązanie:
ln plik.txt kopia.txt
System plików tworzy nową nazwę w katalogu, która wskazuje na ten sam i-węzeł, co plik.txt.
Czyli:
plik.txtikopia.txtmają ten sam numer i-węzła.- Obie nazwy działają jak równorzędne „drzwi” do tego samego pliku.
Co się dzieje, gdy usuwasz plik?
Kiedy usuniesz plik.txt, to tak naprawdę usuwasz tylko jedno odniesienie (nazwę) do i-węzła, a i-węzeł zostaje usunięty dopiero wtedy, gdy liczba dowiązań spadnie do zera.
Możesz sprawdzić liczbę dowiązań za pomocą ls -l – to druga kolumna (po uprawnieniach):
adminek@szymon-pc:~$ ls -l
total 0
-rw-r--r-- 2 adminek adminek 0 kwi 22 15:33 kopia.txt
-rw-r--r-- 2 adminek adminek 0 kwi 22 15:33 plik.txt
Liczba 2 oznacza, że są dwa dowiązania do tego samego i-węzłu.
Możemy również sprawdzić numery i-węzłów dodając do polecenia ls opcję -i:
adminek@szymon-pc:~$ ls -li
total 0
18246 -rw-r--r-- 2 adminek adminek 0 kwi 22 15:33 kopia.txt
18246 -rw-r--r-- 2 adminek adminek 0 kwi 22 15:33 plik.txt
W pierwszej kolumnie mamy numer i-węzła, jak widać kopia.txt oraz plik.txt mają ten sam numer.
Podsumowanie
| Cecha | Dowiązanie symboliczne (symlink) | Dowiązanie twarde (hard link) |
| Typ połączenia | Wskazuje na ścieżkę do pliku | Wskazuje na ten sam i-węzeł |
| Nazwa pliku | Osobna nazwa, przechowuje ścieżkę | Alternatywna nazwa oryginalnego pliku |
| Czy działa po usunięciu oryginału? | Nie (link się "psuje") | Tak (plik nadal istnieje) |
| Możliwość wskazywania katalogu | Tak | Nie (z wyjątkiem . i ..) |
| Możliwość działania między systemami plików | Tak | Nie (tylko w obrębie jednego systemu plików) |
| Zawiera numer i-węzła? | Nie (odnosi się po ścieżce) | Tak (dzieli ten sam i-węzeł) |
Zachowanie przy ls -l |
Pokazuje strzałkę → do celu |
Wygląda jak zwykły plik |
| Zależność od lokalizacji | Tak (przy ścieżkach względnych) | Nie (nazwa = alias do i-węzła) |
| Zużycie miejsca na dysku | Bardzo małe | Brak dodatkowego zużycia |
Liczba dowiązań (ls -l) |
Zawsze 1 | Licznik zwiększa się z każdym linkiem |
W skrócie, dowiązanie symboliczne działa jak zwykły skrów (np. w Widndowsie) i po usunięciu oryginału skrót przestaje działać. Dowiązanie twarde działa jak horkruks z Harrego Pottera - dopóki istnieje jedno dowiązanie do i-węzła to plik na dysku dalej istnieje.