HARDLINK(1) Comenzi utilizator HARDLINK(1) NUME hardlink - vinculeaza mai multe copii ale unui fiier REZUMAT hardlink [opiuni] director|fiier... DESCRIERE hardlink este un instrument care inlocuiete copiile unui fiier fie cu legaturi dure, fie cu clone de copiere la scriere (copy-on-write clones), economisind astfel spaiu. hardlink creeaza mai intai un arbore binar al dimensiunilor fiierelor i apoi compara coninutul fiierelor care au aceeai dimensiune. Exista doua metode de baza de comparare a coninutului. Metoda memcmp citete direct blocurile de date din fiiere i le compara. Cealalta metoda se bazeaza pe sume de control (cum ar fi SHA256); in acest caz, pentru fiecare bloc de date se calculeaza o suma de control prin API-ul de criptografie al nucleului Linux, iar aceasta suma de control este stocata in spaiul utilizatorului i utilizata pentru compararea fiierelor. Pentru fiecare fiier, este pusa in zona de prestocare (cache) i o memorie tampon (buffer) ,,intro" (32 de octei). Aceasta memorie tampon este utilizata independent de metoda de comparaie i de ,,cache-size" i ,,io-size" solicitate. Memoria tampon ,,intro" reduce dramatic operaiunile cu coninutul datelor, deoarece fiierele sunt foarte des diferite de la inceput. OPIUNI -c, --content Ia in considerare numai coninutul fiierului, nu i atributele, atunci cand se stabilete daca doua fiiere sunt egale. La fel ca -pot. -b, --io-size dimensiunea Dimensiunea memoriei tampon read(2) sau sendfile(2) utilizata la compararea coninutului fiierelor. Argumentul dimensiunea poate fi urmat de sufixele multiplicative KiB, MiB, etc. Sufixul ,,iB" este opional, de exemplu, ,,K" are aceeai semnificaie ca i ,,KiB". Valoarea implicita este de 8KiB pentru metoda ,,memcmp" i de 1MiB pentru celelalte metode. Doar metoda ,,memcmp" utilizeaza memoria de proces pentru memoria tampon, celelalte metode utilizeaza modul de copiere zero, iar operaiunea de intrare/ieire se realizeaza in nucleu. Dimensiunea poate fi modificata din mers pentru a se potrivi unui numar de sume de control a coninutului din zona de stocare (cache). -d, --respect-dir Incearca sa lege numai fiierele cu acelai nume de director. Directorul de nivel superior (aa cum este specificat in linia de comanda a hardlink) este ignorat. De exemplu, hardlink --respect-dir /foo /bar va lega /foo/un-dir/fiier cu /bar/un-dir/fiier, dar nu cu /bar/alt-dir/fiier. Daca este combinata cu --respect-name, atunci sunt comparate rutele intregi (cu excepia directorului de nivel superior). -f, --respect-name Incearca sa vinculeze numai fiiere cu acelai nume (de baza). Se recomanda cu tarie utilizarea opiunilor lungi mai degraba decat -f, care este interpretat in mod diferit de alte implementari hardlink. -F, --prioritize-trees Pastreaza fiierele gasite in cel mai anterior director de nivel superior specificat daca exista mai multe fiiere identice in arbori diferii. De exemplu, hardlink foo/ bar/ va lega fiierele din bar/ la fiiere identice din directorul foo/. -i, --include exp-reg O expresie regulata pentru a include fiiere. Daca a fost introdusa opiunea --exclude, aceasta opiune reinclude fiierele care altfel ar fi fost excluse. In cazul in care opiunea este utilizata fara --exclude, sunt incluse numai fiierele care corespund modelului. -m, --maximize Dintre fiierele egale, pastrai fiierul cu cel mai mare numar de legaturi. -M, --minimize Dintre fiierele egale, pastreaza fiierul cu cel mai mic numar de legaturi. -n, --dry-run Nu face nimic, doar afieaza ceea ce s-ar fi facut. -l, --list-duplicates Nu leaga nimic, ci listeaza ruta absoluta a fiecarui fiier duplicat, unul pe linie, precedat de un identificator unic de 16 octei i de un tabulator. -z, --zero Separa liniile cu un NUL in loc de o linie noua in modul -l. -o, --ignore-owner Vinculeaza i compara fiierele chiar daca informaiile despre proprietar (utilizator i grup) sunt diferite. Rezultatele pot fi imprevizibile. -O, --keep-oldest Dintre fiierele egale, pastreaza cel mai vechi fiier (cel mai recent timp de modificare). In mod implicit, se pastreaza cel mai nou fiier. Daca se specifica --maximize sau --minimize, numarul de legaturi are prioritate faa de momentul modificarii. -p, --ignore-mode Vinculeaza i compara fiierele chiar daca modul lor este diferit. Rezultatele pot fi uor imprevizibile. -q, --quiet Modul silenios, nu afieaza nimic. -r, --cache-size dimensiunea Dimensiunea zonei de prestocare (cache) pentru sumele de verificare a coninutului. Toate metodele diferite de ,,memcmp" calculeaza suma de control pentru fiecare bloc de coninut al fiierului (a se vedea --io-size), aceste sume de control sunt stocate in zona de stocare (cache) pentru urmatoarea comparaie. Dimensiunea este importanta pentru fiierele mari sau pentru un set mare de fiiere de aceeai dimensiune. Valoarea implicita este 10Mio (10MiB). -s, --minimum-size dimensiunea Dimensiunea minima de luat in considerare. In mod implicit, valoarea este 1, astfel incat fiierele goale nu vor fi legate. Argumentul dimensiunea poate fi urmat de sufixele multiplicative KiB (=1024), MiB (=1024*1024), i aa mai departe pentru GiB, TiB, PiB, EiB, ZiB i YiB (,,iB" este opional, de exemplu, ,,K" are aceeai semnificaie ca i ,,KiB"). -S, --maximum-size dimensiunea Dimensiunea maxima care trebuie luata in considerare. In mod implicit este 0, iar 0 are semnificaia speciala de nelimitat. Argumentul dimensiunea poate fi urmat de sufixele multiplicative KiB (=1024), MiB (=1024*1024), i aa mai departe pentru GiB, TiB, PiB, EiB, ZiB i YiB (,,iB" este opional, de exemplu, ,,K" are aceeai semnificaie ca i ,,KiB"). -t, --ignore-time Vinculeaza i compara fiierele chiar daca momentul modificarii lor este diferit. Aceasta este de obicei o alegere buna. -v, --verbose Ieire descriptiva, care explica utilizatorului ce se face. Daca este specificata o singura data, este afiat fiecare fiier cu legatura directa. Daca este specificata de doua ori, se afieaza i fiecare comparaie. -x, --exclude exp-reg O expresie regulata care exclude fiierele de la a fi comparate i vinculate. Aceasta opiune poate fi utilizata de mai multe ori. --exclude-subtree exp-reg O expresie regulata care exclude directoare intregi de la a fi comparate i vinculate. Aceasta opiune poate fi utilizata de mai multe ori. --mount Nu parcurge directoare de pe sisteme de fiiere diferite (ramane in cadrul aceluiai sistem de fiiere). -X, --respect-xattrs Incercai sa vinculeze numai fiiere cu aceleai atribute extinse. -y, --method nume Stabilete metoda de comparare a coninutului fiierului. Metodele acceptate in prezent sunt sha256, sha1, crc32c i memcmp. Valoarea implicita este sha256, sau memcmp daca Linux Crypto API nu este disponibil. Metodele bazate pe sume de control sunt implementate in modul ,,zero-copy", in acest caz coninutul fiierului nu este copiat in spaiul utilizatorului i toate calculele sunt efectuate in nucleu. --reflink[=cand] Creeaza clone de copiere la scriere (aka reflink) mai degraba decat legaturi dure. Fiierele clonate cu <> au in comun doar datele de pe disc, dar modul i proprietarul fiierului pot fi diferite. Se recomanda sa o utilizai cu opiunile --ignore-owner i --ignore-mode. Aceasta opiune implica --skip-reflinks pentru a ignora fiierele deja clonate. Argumentul opional cand poate fi never (niciodata), always (intotdeauna) sau auto. Daca argumentul cand este omis, valoarea implicita este auto; in acest caz, hardlink verifica tipul de sistem de fiiere i utilizeaza opiunea ,,--reflink" numai pe BTRFS i XFS, iar in cazul in care crearea unui fiier (clone) cu <> este imposibila, se revine la crearea de legaturi dure. Argumentul always dezactiveaza detectarea tipului de sistem de fiiere i revenirea la crearea de legaturi dure; in acest caz, sunt permise numai crearile de clone cu <>. --skip-reflinks Ignora fiierele deja clonate. Aceasta opiune poate fi utilizata fara --reflink atunci cand se creeaza legaturile dure clasice. -h, --help Afieaza acest mesaj de ajutor i iese. -V, --version Afieaza versiunea i iese. ARGUMENTE hardlink preia unul sau mai multe directoare in care vor fi cautate fiierele care urmeaza sa fie vinculate. ERORI Implementarea originala hardlink utilizeaza opiunea -f pentru a fora crearea de legaturi dure intre sistemele de fiiere. Aceasta caracteristica, foarte rar utilizata, nu mai este suportata de actualul hardlink. hardlink presupune ca arborii pe care opereaza nu se modifica in timpul funcionarii. In cazul in care un arbore se modifica, rezultatul este nedefinit i potenial periculos. De exemplu, daca un fiier obinuit este inlocuit cu un dispozitiv, hardlink poate incepe sa citeasca de pe dispozitiv. Daca o componenta a unei rute este inlocuita de o legatura simbolica sau daca se schimba permisiunile fiierelor, securitatea poate fi compromisa. Nu rulai hardlink pe un arbore in schimbare sau pe un arbore controlat de un alt utilizator. AUTOR Exista mai multe implementari hardlink. Prima implementare este cea a lui Jakub Jelinek pentru distribuia Fedora, aceasta implementare a fost utilizata in util-linux intre versiunile v2.34 i v2.36. Implementarea actuala se bazeaza pe versiunea Debian de la Julian Andres Klode. RAPORTAREA ERORILOR Pentru rapoarte de eroare, folosii sistemul de urmarire al erorilor . DISPONIBILITATE Comanda hardlink face parte din pachetul util-linux care poate fi descarcat de la Linux Kernel Archive . util-linux 2.41 2025-03-29 HARDLINK(1)