10 maja, 2017 – 5 min read

Witam ponownie. W tym wprowadzeniu do linków twardych i symbolicznych, postaramy się najpierw poznać i zdefiniować co oznaczają poszczególne z nich. Następnie omówimy różnice między nimi.

Więc czym jest dowiązanie twarde i co dokładnie robi w powłoce?

Dowiązanie twarde jest po prostu dodatkową nazwą dla istniejącego pliku w Linuksie lub innych uniksopodobnych systemach operacyjnych.

Dla każdego pliku można utworzyć dowolną liczbę dowiązań twardych, a tym samym dowolną liczbę nazw. Twarde dowiązania mogą być również tworzone do innych twardych dowiązań. Nie można ich jednak tworzyć dla katalogów i nie mogą one przekraczać granic systemów plików ani dzielić partycji.

Prawdopodobnie najbardziej użytecznym zastosowaniem dowiązań jest umożliwienie łatwego dostępu do plików, programów i skryptów (tj. krótkich programów) w innym katalogu niż oryginalny plik lub plik wykonywalny (tj. gotowa do uruchomienia wersja programu). Wpisanie nazwy twardego łącza spowoduje, że program lub skrypt zostanie wykonany w taki sam sposób, jak przy użyciu jego oryginalnej nazwy. (http://www.linfo.org/hard_link.html)

Chcesz przeczytać tę historię później? Zapisz ją w Dzienniku.

Co więc tak naprawdę oznacza ta definicja? Cóż, możesz utworzyć twardy link do istniejącego pliku za pomocą polecenia ln nazwa_pliku hardlink. Poniżej przedstawiłem przykład tworzenia twardego łącza w akcji. W poniższym przykładzie utworzyłem hardlink aka skrót do pliku o nazwie file1 z hardlinkiem o nazwie hlink1.

Now lets ls -i. Tak, że wymienia wszystkie pliki z inode.

INODE Definicja: Inode to struktura danych w systemie plików w stylu Unix, która opisuje obiekt systemu plików, taki jak plik lub katalog. Każdy węzeł przechowuje atrybuty i lokalizację(-e) bloku(-ów) danych obiektu. Atrybuty obiektów systemu plików mogą zawierać metadane (czas ostatniej zmiany, dostępu, modyfikacji), a także dane o właścicielu i uprawnieniach.

Katalogi są listami nazw przypisanych do węzłów. Katalog zawiera wpis dla siebie, swojego rodzica i każdego ze swoich dzieci. (https://en.wikipedia.org/wiki/Inode)

Jeśli spojrzysz na plik1 i hlink1 możesz zobaczyć, że inode po lewej stronie jest taki sam. W istocie, hardlinki działają jako skrót do pliku, który jest hardlink.

Teraz przechodząc do „Softlinków”

Softlinki to specjalny rodzaj pliku, który wskazuje na inny plik, podobnie jak skrót. W przeciwieństwie do twardego łącza, dowiązanie symboliczne nie zawiera danych w pliku docelowym. Wskazuje on po prostu na inny wpis gdzieś w systemie plików. Ta różnica daje dowiązaniom symbolicznym pewne cechy, których nie mają dowiązania twarde, takie jak możliwość łączenia się z katalogami lub plikami na zdalnych komputerach podłączonych do sieci poprzez NFS. Ponadto, gdy usuniesz plik docelowy, dowiązania symboliczne do tego pliku stają się bezużyteczne, podczas gdy dowiązania twarde zachowują zawartość pliku. (https://kb.iu.edu/d/abbe)

Teraz utwórzmy miękkie łącze, aby porównać je z twardym łączem, które utworzyliśmy powyżej.

Więc otwórzmy terminal. Przejdź do wyszukiwarki lub wyszukiwania i wpisz terminal powinien wyskoczyć kliknij na niego i otwórz.

Dla naszego przykładu najpierw stwórzmy plik. Jeśli wpiszemy touch example1 wciśnij enter. Możemy utworzyć plik. Teraz, aby utworzyć miękki link.

Jeśli wpiszemy w powłoce ln -s example1 softlink1 tworzymy miękki link między plikami. Zobacz przykład poniżej.

softlink

Teraz gdybyśmy wpisali ls -i zauważymy również, że tylko plik hardlink ma ten sam inode co hardlink, podczas gdy plik soft link ma różne inodes.

jakie są różnice między twardym a miękkim łączem?

Miękkie łącze nie zawiera danych w pliku docelowym.

Łącze miękkie wskazuje na inny wpis gdzieś w systemie plików.

Łącze miękkie ma możliwość łączenia się z katalogami lub z plikami na zdalnych komputerach podłączonych do sieci poprzez NFS.

Usunięcie pliku docelowego dla dowiązania symbolicznego czyni to dowiązanie bezużytecznym.

Dołączenie twarde zachowuje zawartość pliku.

Dołączenia twarde nie mogą być tworzone dla katalogów, nie mogą też przekraczać granic systemu plików ani rozprzestrzeniać się przez partycje.

W dowiązaniu twardym można użyć dowolnej z utworzonych nazw dowiązania twardego do wykonania programu lub skryptu w taki sam sposób, jak podana nazwa oryginalna.

W istocie:

„Pod systemem plików pliki są reprezentowane przez inode

Plik w systemie plików jest w zasadzie linkiem do inode.
Delink twardy wtedy po prostu tworzy inny plik z linkiem do tego samego bazowego inode.

Kiedy usuwasz plik to usuwa jeden link do bazowego inode. Kod jest usuwany (lub usuwany/nadpisywalny) tylko wtedy, gdy wszystkie dowiązania do kodu zostały usunięte.

Dowiązanie symboliczne jest dowiązaniem do innej nazwy w systemie plików.

Po utworzeniu twardego dowiązania dowiązanie jest do kodu inode. usunięcie, zmiana nazwy lub przeniesienie oryginalnego pliku nie wpłynie na twarde dowiązanie, ponieważ łączy się ono z bazowym kodem inode. Wszelkie zmiany w danych na węźle są odzwierciedlone we wszystkich plikach, które odnoszą się do tego węzła.

Uwaga: Twarde łącza są ważne tylko w tym samym systemie plików. Dowiązania symboliczne mogą rozciągać się między systemami plików, ponieważ są po prostu nazwą innego pliku.”

(http://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link)

Poznanie powłoki i sposobu wykonywania polecenia

  • Powłoka odczytuje dane wejściowe z pliku, łańcucha lub terminala użytkownika.
  • Dane wejściowe są dzielone na słowa i operatory, zgodnie z regułami cytowania. Te tokeny są oddzielane metaznakami. Wykonywana jest interpretacja aliasów.
  • Powłoka parsuje (analizuje i podstawia) tokeny na polecenia proste i złożone.
  • Powłoka wykonuje różne interpretacje powłoki, rozbijając zinterpretowane tokeny na listy nazw plików, poleceń i argumentów.
  • Przekierowanie jest wykonywane w razie potrzeby, operatory przekierowania i ich operandy są usuwane z listy argumentów.
  • Wykonywane są polecenia.
  • Opcjonalnie powłoka czeka na zakończenie polecenia i zbiera swój kod zakończenia.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.