Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Gestionarea legăturilor în Linux. Comanda ln

13 septembrie 2016 By Bobses 2 comentarii

În Linux, un link (o legătură) reprezintă o cale de a acorda unui fișier identități multiple, similar cu scurtăturile din Windows. Sunt câteva motive pentru care Linux folosește link-urile:

  • ajută fișierele să devină mai accesibile;
  • pentru a da comenzilor/fișierelor mai multe nume;
  • pentru a permite programelor care folosesc aceleași fișiere să le acceseze din diferite locuri.

Esistă două tipuri de link-uri: legături hard și legături simbolice.

Legăturile hard (hard links) sunt obținute prin crearea a două intrări care țintesc spre același fișier (mai exact, același inode - un inode conține informații despre fișierul căruia îi este asociat: permisiuni, adresa fizică la care se află fișierul pe disk, dimensiunea fișierului, numărul de referințe către sine, etc.). Ambele nume de fișiere sunt în aceeași măsură valide; nu există un fișier mai adevărat decât celălalt. Pentru a șterge fișierul, este necesar să ștergem și hard link-urile (sistemul de fișiere verifică câte nume indică către un anume inode și, abia în momentul în care nu mai există țintiri către același conținut, se consideră că fișierul a fost șters).

Toate sistemele de fișiere native Linux suportă legături hard, în timp ce unele sisteme de fișiere non-Linux nu le suportă. Din cauza modului în care sunt create, legăturile hard pot fi create numai în cadrul aceluiași sistem de fișiere (acest fapt poate reprezenta un dezavantaj) - de exemplu, nu putem crea un hard link de pe partiția root (/) pe un sistem de fișiere separat care este montat într-un director.

Legăturile simbolice (symbolic links) sunt legături către numele fișierului, reprezentând, de fapt, un tip special de fișier, legătura fiind reținută într-un nou inode. Linux știe că vrem să accesăm fișierul țintă în momentul în care accesăm legătura simbolică. Astfel, accesând un link simbolic este ca și cum am accesa fișierul original. Legăturile simbolice pot fi create și către fișiere de pe alte sisteme de fișiere - putem ținti de pe sistemul de fișiere root (/) către un alt sistem de fișiere montat într-un director.

În practică, legăturile simbolice sunt mult mai mult folosite decât legăturile hard, abilitatea de a ținti către sisteme de fișiere diferite reprezentând un avantaj major.

Un dezavantaj al legăturilor simbolice este că procesul de căutare pentru accesarea fișierului original consumă mai mult timp, fiind mai încet decât accesarea legăturilor hard.

Crearea legăturilor în Linux cu comanda ln

Sintaxa comenzii ln este similară comenzii cp:

ln [opțiuni] sursă legătură

Sursa este reprezentată de fișierul original, către care vrem să creăm legătura.

Legătura reprezintă numele noii legături create.

Comanda ln creează legături hard în mod implicit; ea suportă câteva opțiuni, cele mai folosite fiind:

  • -f sau --force - dacă există alte link-uri către fișierul sursă, comanda ln șterge toate aceste vechi legături
  • -s sau --symbolic - creează legături simbolice

Există mai multe opțiuni care pot îndeplini sarcini mai mult sau mai puțin obscure. Folosiți man ln pentru a le consulta.

$ ls -l
$-rw-r--r-- 1 bobsesa users 0 Sep 7 16:50 exemplu  /observăm că numărul legăturilor către fișier este 1
$ ln exemplu hard-link  /creează o legătură hard către fișierul exemplu
$
$ls -l
$-rw-r--r-- 2 bobsesa users 0 Sep 7 16:50 exemplu /observăm că a crescut cu 1 numărul de legături către fișier
$
$ ln -s exemplu exemplu-simbolic /creează o legătură simbolică către fișierul exemplu

Spre deosebire de legăturile hard, cele simbolice nu cresc contorul numărului de legături către un fișier (vezi comanda ls -l); de asemenea, tot comanda ls -l arată, convențional notat cu o săgeată (->), către ce fișier țintește o legătură simbolică.

În imaginea de mai jos sunt exemplificate câteva comenzi cu care m-am jucat pentru crearea unor legături hard și simbolice:

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Click to share on Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Comenzi Linux Etichete: fisiere, legaturi, linux

Comentarii

  1. Ice Alinutza a zis

    15 septembrie 2016 la ora 3:23

    filesystem, inode, symlink... Cred că-s niște termeni cam complicați pentru a putea fi explicați în câteva cuvinte dar dacă te-ai făcut înțeles (și acest lucru îl pot aprecia numai cititori) mă bucur. Personal nu am înțeles cu ce-l ajută pe utilizatorul "începător" cunoașterea acestor comenzi dar poate în articolul viitor vei aborda această problemă cu exemple practice. In plus, pentru a ușura înțelegerea unora ca mine, cred că ar fi fost bine ca în terminal (ultima imagine) să folosești după fiecare comandă (sau înainte) "#" (comentariu) și să arăți ce urmează a se face ("întămple") folosind comanda respectivă... Succes!

    Răspunde
    • Bobses a zis

      15 septembrie 2016 la ora 5:27

      Despre sistemele de fișiere din Linux am vorbit pe larg într-un alt articol; legăturile simbolice (ce sunt, cum se creează și la ce ajută) le-am explicat chiar în acest articol. Despre ce este un inode, la fel, am scris tot în acest articol...
      Ultima imagine are comenzi pe care le-am descris și le-am dat exemplu tot în cadrul acestui articol - trebuie doar identificate de cititorul interesat.

      Răspunde

Lasă un răspunsAnulează răspunsul

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

Copyright © 2025 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii {vendor_count} Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}