12. Legături simbolice (symlinks)

Haideți să folosim exemplul anterior referitor la informația inode:

utilizator@nume_gazda:~$ ls -li
140 drwxr-xr-x 2 utilizator utilizator 6 Ian 20 20:13 Desktop
141 drwxr-xr-x 2 utilizator utilizator 6 Ian 20 20:01 Documente

Poate că ați remarcat că ne vom concentra atenția asupra celui de-al treilea câmp al comenzii ls, cel care reprezintă de fapt numărul total de legături. Legături care contabilizează numărul total de legături normale (hard links) pe care acel fișier le are. Totuși, aceste numere nu reprezintă mare lucru pentru dvs. în acest moment. Așa că hai să discutăm un pic.

Legăturile simbolice – Symlinks

În cadrul sistemului de operare Windows, există niște entități numite scurtături. Scurtăturile sunt de fapt aliasuri către alte fișiere. Dacă faceți niște modificări la fișierul original, puteți în principiu strica acea scurtătură. În Linux, echivalentul scurtăturilor sunt legăturile simbolice (symlinks). Legăturile simbolice ne permit să ne legăm de un alt fișier după numele lui. Alte tipuri de legături ce apar în Linux sunt legăturile normale (hardlinks). Acestea sunt de fapt un alt fișier cu o legătură către un inode. Haideți să vedem ce înseamnă toate acestea în practică, începând cu legăturile simbolice.

utilizator@nume_gazda:~/Desktop$ echo 'fisierul_meu' > fisierul_meu
utilizator@nume_gazda:~/Desktop$ echo 'fisierul_meu2' > fisierul_meu2
utilizator@nume_gazda:~/Desktop$ echo 'fisierul_meu3' > fisierul_meu3
utilizator@nume_gazda:~/Desktop$ ln -s fisierul_meu legatura_fisierul_meu
utilizator@nume_gazda:~/Desktop$ ls -li
total 12
  151 -rw-rw-r-- 1 utilizator utilizator 7 Ian 21 21:36 fisierul_meu
93401 -rw-rw-r-- 1 utilizator utilizator 8 Ian 21 21:36 fisierul_meu2
93402 -rw-rw-r-- 1 utilizator utilizator 8 Ian 21 21:36 fisierul_meu3
93403 lrwxrwxrwx 1 utilizator utilizator 6 Ian 21 21:39 legatura_fisierul_meu -> fisierul_meu

Puteți vedea că am creat o legătură simbolică denumită legătura_fisierul_meu care se duce către fișierul meu. Legăturile simbolice sunt reprezentate cu ajutorul simbolului -> . Deasemenea puteți vedea cum am primit un nou număr inode, legăturile simbolice sunt doar fișiere care duc către numele de fișier. În momentul în care modificăm o legătură simbolică, fișierul deasemenea este modificat. Numerele inode sunt unice în sistemele de fișiere. Nu puteți avea aceleași două numere inode în același sistem de fișiere, ceea ce înseamnă că nu puteți face referire la un fișier într-un sistem de fișiere diferit după numărul lui inode. Totuși, dacă folosiți legături simbolice, acestea nu folosesc numere inode, ci folosesc nume de fișiere, așa că pot fi legate în sisteme de fișiere diferite.

Legături normele

Haideți să vedem un exemplu de legătură normală (hardlink):

utilizator@nume_gazda:~/Desktop$ ln fisierul_meu2 legatura_normala
utilizator@nume_gazdacebox:~/Desktop$ ls -li
total 16
  151 -rw-rw-r-- 1 utilizator utilizator 7 Ian 21 21:36 fisierul_meu
93401 -rw-rw-r-- 2 utilizator utilizator 8 Ian 21 21:36 fisierul_meu2
93402 -rw-rw-r-- 1 utilizator utilizator 8 Jan 21 21:36 fisierul_meu3
93403 lrwxrwxrwx 1 utilizator utilizator 6 Ian 21 21:39 legatura_fisierul_meu -> fisierul_meu
93401 -rw-rw-r-- 2 utilizator utilizator 8 Ian 21 21:36 legatura_normala

O legătură normală pur și simplu creează un alt fișier cu un link către același inode. Așa că am modifica conținutul fișierului fisierul_meu2 sau legatura_normala, schimbarea ar fi vizibilă la amândouă, dar dacă aș șterge fisierul_meu2, fișierul ar fi totuși accesibil prin intermediul legatura_normala. Ei, și aici ne vine contorul de legături în ajutor. Contorul de legături este numărul de legături normale pe care un inode îl are, așa că în momentul în care ștergeți un fișier, numărul contorului va scădea. Inode-ul este șters numai atunci când toate legăturile normale către inode au fost șterse. În momentul în care creați un fișier, contorul lui de legături este 1, din cauză că aveți un singur fișier care indică spre acel inode. Spre deosebire de legăturile simbolice, legăturile normale nu pot fi legate în sisteme de fișiere diferite, pentru că inode-urile sunt unice pentru fiecare sistem de fișiere.

Crearea unei legături simbolice

$ ln -s fisierul_meu legatura_mea

Pentru a crea un link simbolic, folosiți comanda ln cu opțiunea -s de la simbolic, apoi specificați fișierul țintă și în final numele legăturii.

Crearea unei legături normale

$ ln un_fisier o_legatura

La fel ca și crearea unei legături simbolice, dar fară opțiunea -s.

Exerciții

Jucați-vă și creați legături simbolice și normale, ștergeți câteva și vedeți ce se întâmplă.


Lasă un răspuns

Adresa ta de email nu va fi publicată.

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.