Ce este legătura soft și legătura hard în Linux?
O legătură simbolică sau soft este o legătură reală către fișierul original, în timp ce o legătură hard este o copie în oglindă a fișierului original. Dacă ștergeți fișierul original, legătura soft nu mai are nicio valoare, deoarece indică spre un fișier inexistent. Dar în cazul legăturii hard link, situația este complet opusă. Chiar dacă ștergeți fișierul original, hard link-ul va avea în continuare datele din fișierul original. Deoarece hard link acționează ca o copie în oglindă a fișierului original.
În câteva cuvinte, un soft link
- poate traversa sistemul de fișiere,
- permite crearea de legături între directoare,
- are un număr de inod și permisiuni de fișier diferite de cele ale fișierului original,
- permisiunile nu vor fi actualizate,
- are doar calea fișierului original, nu și conținutul.
Un hard Link
- nu poate traversa limitele sistemului de fișiere (i.e. Un hardlink poate funcționa numai pe același sistem de fișiere),
- nu poate lega directoare,
- are același număr de inod și permisiuni ale fișierului original,
- permisiunile vor fi actualizate dacă modificăm permisiunile fișierului sursă,
- are conținutul real al fișierului original, astfel încât să puteți vizualiza în continuare conținutul, chiar dacă fișierul original a fost mutat sau eliminat.
Încă nu înțelegeți? Ei bine, permiteți-mi să vă arăt câteva exemple practice.
Crearea unei legături soft sau a unei legături simbolice
Să creăm un director gol numit „test”.
$ mkdir test
Schimbăm în directorul „test”:
$ cd test
Creăm acum un nou fișier numit source.file cu niște date așa cum se arată mai jos.
$ echo "Welcome to OSTechNix" >source.file
Să vizualizăm datele din source.file.
$ cat source.fileWelcome to OSTechNix
Ei bine, source.file a fost creat.
Acum, creați o legătură simbolică sau soft link către source.file.
Pentru a face acest lucru, rulați:
$ ln -s source.file softlink.file
Să comparăm datele atât ale source.file cât și ale softlink.file.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
După cum vedeți în ieșirea de mai sus, softlink.file afișează aceleași date ca și source.file.
Să verificăm inodurile și permisiunile lui softlink.file și source.file.
$ ls -lia
Semplu de ieșire:
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
Așa cum vedem în captura de ecran de mai sus, numărul de inode (11665731 vs 11665692) și permisiunile fișierelor (lrwxrwxrwx vs -rwr-r–r–) sunt diferite, chiar dacă softlink.Prin urmare, se dovedește că softlink nu are același număr de nod și aceleași permisiuni ca și fișierul original.
Acum, eliminați fișierul original (adică source.file) și vedeți ce se întâmplă.
$ rm source.file
Verificați conținutul fișierului softlink.file folosind comanda:
$ cat softlink.file
Eșantion de ieșire:
cat: softlink.file: No such file or directory
Cum vedeți mai sus, nu există un astfel de fișier sau director numit softlink.file după ce am eliminat fișierul original (adică source.file). Așadar, acum înțelegem că soft link este doar o legătură care indică fișierul original. Softlink este ca o scurtătură către un fișier. Dacă eliminați fișierul, scurtătura este inutilă.
După cum știți deja, dacă eliminați softlink-ul, fișierul original va fi în continuare disponibil.
Sugestii de lectură:
- Cum se listează legăturile Symlinks pe Linux
- Cum se găsesc legăturile Symlinks rupte și se șterg pe Linux
Crearea legăturii hard link
Crearea unui fișier numit sursă.cu un fișier cu un anumit conținut, așa cum se arată mai jos.
$ echo "Welcome to OSTechNix" >source.file
Să verificăm conținutul fișierului.
$ cat source.fileWelcome to OSTechNix
fila.source.file a fost creată acum.
Acum, haideți să creăm legătura dură cu fișierul.source.file așa cum se arată mai jos.
$ ln source.file hardlink.file
Verificați conținutul fișierului hardlink.file.
$ cat hardlink.fileWelcome to OSTechNix
Vezi că fișierul hardlink.file afișează aceleași date ca și fișierul.source.file.
Să verificăm inode-ul și permisiunile din hardlink.file și source.file.
$ ls -lia
Eșantion de ieșire:
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
Acum, vedem că atât hardlink.file cât și source.file au același număr de inode (11665692) și aceleași permisiuni de fișier (-rw-r–r–). Prin urmare, se dovedește că fișierul hardlink împarte același număr de noduri și aceleași permisiuni ale fișierului original.
Nota: Dacă schimbăm permisiunile pe source.file, aceeași permisiune va fi aplicată și la hardlink.file.
Acum, eliminăm fișierul original (i.e source.file) și vedeți ce se întâmplă.
$ rm source.file
Verificați conținutul fișierului hardlink.file folosind comanda:
$ cat hardlink.file
Semplu de ieșire:
Cum vedeți mai sus, chiar dacă am șters fișierul sursă, pot vedea conținutul fișierului hardlink.file. Prin urmare, se dovedește că hard link-ul împarte același număr de inod, permisiunile și datele fișierului original.
Atunci, care este diferența dintre hard link și fișierul copiat normal?
S-ar putea să vă întrebați de ce am crea un hard link în timp ce putem copia/lipii cu ușurință fișierul original? Crearea unui hard link către un fișier este diferită de copierea acestuia.
Dacă copiați un fișier, acesta va duplica doar conținutul. Deci, dacă modificați conținutul unui fișier (fie el original sau hard link), nu are niciun efect asupra celuilalt. Cu toate acestea, dacă creați un hard link către un fișier și modificați conținutul oricăruia dintre fișiere, modificarea va fi văzută pe ambele.
Să ne uităm la fișierul.sursă.
$ cat source.file Welcome to OSTechNix
Fisierul sursă are o singură linie care spune – Welcome to OSTechNix.
Adaugați o nouă linie, de exemplu „Welcome to Linux” în source.file sau hardlink.file.
$ echo "Welcome to Linux" >>source.file
Acum verificați conținutul ambelor fișiere.
$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux
Vezi? Modificările pe care tocmai le-am făcut în source.file sunt actualizate în ambele fișiere. Adică – ambele fișiere (sursă și hard link) se sincronizează. Orice modificări pe care le faceți în oricare dintre fișiere se vor reflecta în celălalt. Dacă în mod normal copiați/lipiți fișierul, nu veți vedea nicio modificare nouă în celălalt fișier.
Pentru mai multe detalii, consultați paginile de manual.
$ man ln
Aceasta este tot pentru moment. Sper că v-ați făcut o idee de bază despre legătura simbolică sau soft link și hard link.
Mulțumim că ați trecut pe aici!
Ajutați-ne să vă ajutăm să vă ajutăm:
- Subscrieți-vă la buletinul nostru de știri prin e-mail : Înscrieți-vă acum
- Susțineți OSTechNix : Donați prin PayPal
- Descărcați cărți electronice și videoclipuri gratuite : OSTechNix pe TradePub
- Conectați-vă cu noi: Reddit | Facebook | Facebook | Twitter | LinkedIn | Fluxuri RSS
Treceți o zi bună!!!