10 mai, 2017 – 5 min citește

Bună ziua din nou acolo. În această introducere în legătură cu legăturile dure și legăturile simbolice, vom încerca mai întâi să învățăm și să definim ce înseamnă fiecare dintre ele. Apoi vom discuta care sunt diferențele dintre cele două.

Ce este un hard link și ce anume face acesta în shell?

Un hard link este pur și simplu un nume suplimentar pentru un fișier existent pe Linux sau pe alte sisteme de operare de tip Unix.

Se poate crea orice număr de hard link-uri și, prin urmare, orice număr de nume, pentru orice fișier. De asemenea, pot fi create legături dure către alte legături dure. Cu toate acestea, ele nu pot fi create pentru directoare și nu pot traversa granițele sistemului de fișiere sau se pot întinde peste partiții.

Poate cea mai utilă aplicație a legăturilor dure este aceea de a permite ca fișierele, programele și scripturile (adică programele scurte) să fie accesate cu ușurință într-un alt director decât fișierul original sau fișierul executabil (adică versiunea gata de execuție a unui program). Tastarea numelui legăturii dure va face ca programul sau scriptul să fie executat în același mod ca și în cazul utilizării numelui său original. (http://www.linfo.org/hard_link.html)

Vreți să citiți această poveste mai târziu? Salvați-o în Jurnal.

Atunci ce înseamnă cu adevărat această definiție? Ei bine, puteți crea o legătură directă cu un fișier existent folosind comanda ln nume_fișier hardlink. Am oferit mai jos un exemplu de creare a unui hard link în acțiune. În exemplul de mai jos am creat un hardlink aka o scurtătură către fișierul numit file1 cu hardlink-ul numit hlink1.

Acum să ls -i. Pentru ca acesta să listeze toate fișierele cu inode.

INODE Definiție: Inode-ul este o structură de date într-un sistem de fișiere de tip Unix care descrie un obiect al sistemului de fișiere, cum ar fi un fișier sau un director. Fiecare inode stochează atributele și locația (locațiile) blocurilor de disc ale datelor obiectului. Atributele obiectelor din sistemul de fișiere pot include metadate (orele ultimei modificări, ale ultimei modificări, ale ultimului acces, ale ultimei modificări), precum și date privind proprietarul și permisiunile.

Directoarele sunt liste de nume atribuite inode-urilor. Un director conține o intrare pentru el însuși, pentru părintele său și pentru fiecare dintre copiii săi. (https://en.wikipedia.org/wiki/Inode)

Dacă vă uitați la file1 și la hlink1 puteți vedea că inodul din partea stângă este același. În esență, hardlink acționează ca o scurtătură către acel fișier care este hardlink.

Acum trecem la „Soft Links”

Soft links este un tip special de fișier care punctează către un alt fișier, la fel ca o scurtătură. Spre deosebire de o legătură hard, o legătură simbolică nu conține datele din fișierul țintă. Ea indică pur și simplu o altă intrare undeva în sistemul de fișiere. Această diferență conferă legăturilor simbolice anumite calități pe care legăturile permanente nu le au, cum ar fi capacitatea de a crea legături către directoare sau către fișiere de pe calculatoare aflate la distanță în rețea prin NFS. De asemenea, atunci când ștergeți un fișier țintă, legăturile simbolice către acel fișier devin inutilizabile, în timp ce legăturile dure păstrează conținutul fișierului. (https://kb.iu.edu/d/abbe)

Acum haideți să creăm o legătură soft pentru a o compara cu legătura hard pe care am creat-o mai sus.

Așa că haideți să deschidem un terminal. Mergeți la finder sau căutați și introduceți terminal ar trebui să apară faceți clic pe el și deschideți-l.

Pentru exemplul nostru să creăm mai întâi un fișier. Dacă scriem touch example1 și apăsăm enter. Putem crea un fișier. Acum să creăm legătura soft link.

Dacă scriem în shell ln -s example1 softlink1 vom crea o legătură soft link între fișiere. Vedeți exemplul de mai jos.

softlink

Acum, dacă am tasta ls -i vom observa, de asemenea, că doar fișierul hardlink are același inod ca și hardlink, în timp ce fișierul soft link are inoduri diferite.

Care sunt diferențele dintre hardlink și softlink?

Un softlink nu conține datele din fișierul țintă.

Un soft link indică o altă intrare undeva în sistemul de fișiere.

Un soft link are capacitatea de a se conecta la directoare sau la fișiere de pe calculatoare la distanță conectate în rețea prin NFS.

Ștergerea unui fișier țintă pentru o legătură simbolică face ca acea legătură să devină inutilă.

Un hard link păstrează conținutul fișierului.

Un hard link nu poate fi creat pentru directoare, iar acestea nu pot traversa granițele sistemului de fișiere sau se pot întinde pe mai multe partiții.

Într-un hardlink puteți folosi oricare dintre numele hardlink create pentru a executa un program sau un script în același mod ca și numele original dat.

În esență:

„Sub sistemul de fișiere, fișierele sunt reprezentate de inode-uri

Un fișier din sistemul de fișiere este practic o legătură către un inode.
Un hardlink nu face decât să creeze un alt fișier cu o legătură către același inode subiacent.

Când ștergeți un fișier, acesta elimină o legătură către inode-ul subiacent. O legătură simbolică este o legătură către un alt nume din sistemul de fișiere.

După ce a fost făcută o hard link, legătura este către un alt nume din sistemul de fișiere.

După ce a fost făcută o hard link, legătura este către inode. ștergerea, redenumirea sau mutarea fișierului original nu va afecta hard link-ul, deoarece acesta este legat de inode-ul de bază. Orice modificare a datelor de pe inode se reflectă în toate fișierele care se referă la acel inode.

Nota: Hard link-urile sunt valabile numai în cadrul aceluiași sistem de fișiere. Legăturile simbolice pot acoperi mai multe sisteme de fișiere, deoarece sunt pur și simplu numele unui alt fișier.”

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

Examinarea shell-ului și a modului în care acesta execută o comandă

  • Shell-ul își citește intrările dintr-un fișier, dintr-un șir de caractere sau din terminalul utilizatorului.
  • Intrarea este împărțită în cuvinte și operatori, respectând regulile de citare. Aceste jetoane sunt separate de metacaractere. Se realizează expansiunea aliasurilor.
  • Extractorul de shell analizează (analizează și substituie) token-urile în comenzi simple și compuse.
  • Extractorul de shell realizează diverse expansiuni de shell, descompunând token-urile expandate în liste de nume de fișiere și comenzi și argumente.
  • Se efectuează redirecționarea dacă este necesar, operatorii de redirecționare și operanzii lor sunt eliminați din lista de argumente.
  • Comenzile sunt executate.
  • Opțional, shell-ul așteaptă finalizarea comenzii și colectează starea de ieșire a acesteia.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.