Co to jest miękkie łącze i twarde łącze w systemie Linux?
Symboliczne lub miękkie łącze jest rzeczywistym łączem do oryginalnego pliku, podczas gdy twarde łącze jest kopią lustrzaną oryginalnego pliku. Jeśli usuniesz oryginalny plik, miękki link nie ma żadnej wartości, ponieważ wskazuje na nieistniejący plik. Ale w przypadku twardego linku, jest zupełnie odwrotnie. Nawet jeśli usuniesz oryginalny plik, twardy link nadal będzie posiadał dane oryginalnego pliku. Ponieważ twardy link działa jak lustrzana kopia oryginalnego pliku.
W skrócie, miękki link
- może przejść przez system plików,
- pozwala na linkowanie między katalogami,
- ma inny numer inode i uprawnienia pliku niż oryginalny plik,
- uprawnienia nie będą aktualizowane,
- ma tylko ścieżkę oryginalnego pliku, nie zawartość.
Twarde łącze
- nie może przekraczać granic systemu plików (tj.e. A hardlink can only work on the same filesystem),
- can’t link directories,
- has the same inode number and permissions of original file,
- permissions will be updated if we change the permissions of source file,
- has the actual contents of original file, so that you still can view the contents, even if the original file moved or removed.
Wciąż tego nie rozumiesz? Cóż, pozwól, że pokażę ci kilka praktycznych przykładów.
Tworzenie Soft Link lub Symbolic Link
Utwórzmy pusty katalog o nazwie „test”.
$ mkdir test
Zmień katalog na „testowy”:
$ cd test
Teraz utwórz nowy plik o nazwie source.file z pewnymi danymi, jak pokazano poniżej.
$ echo "Welcome to OSTechNix" >source.file
Przejrzyjrzyjmy dane pliku source.file.
$ cat source.fileWelcome to OSTechNix
Więc, plik source.file został utworzony.
Teraz, utwórz symboliczny lub miękki link do source.file.
Aby to zrobić, uruchom:
$ ln -s source.file softlink.file
Porównajmy dane zarówno source.file jak i softlink.file.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
Jak widać na powyższym wyjściu, softlink.file wyświetla te same dane co source.file.
Sprawdźmy inodes i uprawnienia softlink.file i source.file.
$ ls -lia
Przykładowe dane wyjściowe:
total 1211665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
Jak widzimy na powyższym zrzucie ekranu, numer inode (11665731 vs 11665692) i uprawnienia pliku (lrwxrwxrwx vs -rw-r–r–) są różne, mimo że softlink.file ma taką samą zawartość jak source.file, . Stąd jest udowodnione, że softlink nie ma tego samego numeru inode i uprawnień co oryginalny plik.
Teraz usuń oryginalny plik (tj. source.file) i zobacz co się stanie.
$ rm source.file
Sprawdź zawartość pliku softlink.file używając komendy:
$ cat softlink.file
Przykładowe dane wyjściowe:
cat: softlink.file: No such file or directory
Jak widzisz powyżej, nie ma takiego pliku lub katalogu o nazwie softlink.file po tym jak usunęliśmy oryginalny plik (tj. source.file). Tak więc, teraz rozumiemy, że soft link jest po prostu link, który wskazuje na oryginalny plik. Softlink jest jak skrót do pliku. Jeśli usuniesz plik, skrót jest bezużyteczny.
Jak już wiesz, jeśli usuniesz miękki link, oryginalny plik będzie nadal dostępny.
Sugerowana lektura:
- How To List Symlinks On Linux
- How To Find Broken Symlinks And Delete Them On Linux
Creating Hard Link
Utwórz plik o nazwie source.z pewną zawartością, jak pokazano poniżej.
$ echo "Welcome to OSTechNix" >source.file
Zweryfikujmy zawartość pliku.
$ cat source.fileWelcome to OSTechNix
Plik source.file został utworzony teraz.
Teraz utwórzmy twarde łącze do pliku source.file, jak pokazano poniżej.
$ ln source.file hardlink.file
Sprawdź zawartość pliku hardlink.file.
$ cat hardlink.fileWelcome to OSTechNix
Widzisz, że plik hardlink.file wyświetla te same dane, co plik source.file.
Sprawdźmy inode i uprawnienia plików hardlink.file i source.file.
$ ls -lia
Przykładowe dane wyjściowe:
total 1611665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
Teraz widzimy, że zarówno plik hardlink.file jak i source.file mają ten sam numer inodes (11665692) i uprawnienia do plików (-rw-r–r–). Stąd, jest to udowodnione, że plik hardlink dzieli ten sam numer inodes i uprawnienia oryginalnego pliku.
Uwaga: Jeśli zmienimy uprawnienia na pliku source.file, te same uprawnienia zostaną zastosowane do pliku hardlink.file również.
Teraz, usuń oryginalny plik (i.
$ rm source.file
Sprawdź zawartość pliku hardlink.file używając komendy:
$ cat hardlink.file
Przykładowe dane wyjściowe:
Jak widać powyżej, nawet jeśli usunąłem plik źródłowy, mogę zobaczyć zawartość pliku hardlink.file. Udowodniono więc, że twardy link dzieli ten sam numer inode, uprawnienia i dane oryginalnego pliku.
Więc, jaka jest różnica między twardym linkiem a normalnie skopiowanym plikiem?
Możesz się zastanawiać, dlaczego mielibyśmy tworzyć twardy link, skoro możemy łatwo skopiować/wkleić oryginalny plik? Tworzenie twardego linku do pliku jest inne niż jego kopiowanie.
Jeśli skopiujesz plik, będzie on po prostu duplikował jego zawartość. Więc jeśli zmodyfikujesz zawartość jednego pliku (oryginalnego lub twardego linku), nie będzie to miało żadnego wpływu na drugi. Jeśli jednak utworzysz twardy link do pliku i zmienisz zawartość któregokolwiek z nich, zmiana będzie widoczna w obu.
Przyjrzyjrzyjmy się plikowi source.file.
$ cat source.file Welcome to OSTechNix
Plik źródłowy ma pojedynczą linię, która mówi – Witamy w OSTechNix.
Dodaj nową linię, na przykład „Welcome to Linux” w pliku source.file lub hardlink.file.
$ echo "Welcome to Linux" >>source.file
Teraz sprawdź zawartość obu plików.
$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux
Widzisz? Zmiany, które właśnie wprowadziliśmy w pliku source.file są aktualizowane w obu plikach. Oznacza to, że oba pliki (źródłowy i twardy link) synchronizują się. Jakiekolwiek zmiany dokonane w którymkolwiek z plików zostaną odzwierciedlone w drugim. Jeśli normalnie kopiujesz/wklejasz plik, nie zobaczysz żadnych nowych zmian w innym pliku.
Po więcej szczegółów, sprawdź strony man.
$ man ln
To wszystko na teraz. Mam nadzieję, że masz podstawowe pojęcie o dowiązaniach symbolicznych lub miękkich i twardych.
Dzięki za zatrzymanie się!
Pomóż nam pomóc tobie:
- Zapisz się do naszego biuletynu e-mail : Zapisz się teraz
- Wspieraj OSTechNix : Donate Via PayPal
- Ściągnij darmowe E-Booki i Wideo : OSTechNix na TradePub
- Połącz się z nami: Reddit | Facebook | Twitter | LinkedIn | Kanały RSS
Miłego dnia!!!
.