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!!!

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.