Scroll to navigation

LOCATEDB(5) File Formats Manual LOCATEDB(5)

NUME

locatedb - bază de date de nume de fișiere comprimată frontal

DESCRIERE

Această pagină de manual documentează formatul bazelor de date cu nume de fișiere pentru versiunea GNU a locate. Bazele de date cu nume de fișiere conțin liste de fișiere care se aflau în anumiți arbori de directoare în momentul în care bazele de date au fost actualizate ultima dată.

Pot exista mai multe baze de date. Utilizatorii pot selecta bazele de date în care locate caută folosind o variabilă de mediu sau o opțiune de linie de comandă; a se vedea locate(1). Administratorul de sistem poate alege numele de fișier al bazei de date implicite, frecvența cu care sunt actualizate bazele de date și directoarele pentru care acestea conțin intrări. În mod normal, bazele de date cu nume de fișiere sunt actualizate prin rularea periodică a programului updatedb, de obicei în fiecare noapte; a se vedea updatedb(1).

Formatul bazei de date GNU LOCATE02

Acesta este formatul implicit al bazelor de date produse de updatedb. Programul updatedb execută frcode pentru a comprima lista de nume de fișiere utilizând compresia frontală, ceea ce reduce dimensiunea bazei de date de un factor de 4 până la 5. Compresia frontală (cunoscută și sub denumirea de codificare incrementală) funcționează după cum urmează.

Intrările din baza de date sunt o listă ordonată (fără a ține cont de diferențele dintre majuscule și minuscule, pentru confortul utilizatorilor). Deoarece lista este sortată, este probabil ca fiecare intrare să aibă un prefix (șir inițial) comun cu intrarea anterioară. Fiecare intrare în baza de date începe cu un octet de contorizare diferențială cu semn, care reprezintă numărul suplimentar de caractere ale prefixului intrării precedente care urmează să fie utilizate în plus față de numărul pe care intrarea precedentă îl utilizează de la predecesorul său (numărătoarea poate fi negativă.) După numărătoare urmează un rest ASCII cu terminație nulă, partea din nume care urmează prefixului partajat.

În cazul în care numărul diferențial de poziție este mai mare decât poate fi stocat într-un octet cu semn (±127), octetul are valoarea 0x80 (binar 10000000), iar numărul real urmează într-un cuvânt de 2 octeți, cu octetul cel mai mare mai întâi (ordinea octeților de rețea). Această numărătoare poate fi, de asemenea, negativă (bitul de semn fiind în primul dintre cei doi octeți).

Fiecare bază de date începe cu o intrare fictivă pentru un fișier numit „LOCATE02”, pe care locate îl verifică pentru a se asigura că fișierul bazei de date are formatul corect; în timpul căutării, ignoră această intrare.

Bazele de date nu pot fi concatenate împreună, chiar dacă prima intrare (fictivă) este eliminată din toate bazele de date, cu excepția primei. Acest lucru se datorează faptului că numărul diferențial de poziție din prima intrare a celei de-a doua baze de date și a următoarelor va fi greșit.

În viitor, este posibil ca datele din baza de date „locate” să nu fie sortate într-o anumită ordine. Pentru a obține rezultate sortate, trimiteți ieșirea din locate prin sort -f.

Formatul bazei de date „slocate”

Programul slocate utilizează un format de bază de date similar, dar nu chiar la fel ca GNU locate. Primul octet al bazei de date specifică nivelul său de securitate. Dacă nivelul de securitate este 0, slocate va citi, va potrivi și va imprima numele fișierelor numai pe baza informațiilor din baza de date. Cu toate acestea, dacă octetul de nivel de securitate este 1, slocate omite intrările de la ieșire dacă utilizatorul care îl invocă nu are acces la ele. Al doilea octet al bazei de date este zero. Al doilea octet este urmat de prima intrare din baza de date. Prima intrare din baza de date nu este precedată de nici un număr diferențial sau de o intrare fictivă. În schimb, se presupune că numărul diferențial pentru primul element este zero.

Începând cu a doua intrare (dacă există) în baza de date, datele sunt interpretate ca în formatul GNU LOCATE02.

Formatul vechi al bazei de date „locate”

Acesta este, de asemenea, un format vechi de bază de date, utilizat de programele Unix locate și find și de versiunile anterioare ale celor GNU. updatedb rulează programe numite bigram și code pentru a produce baze de date în format vechi. Formatul vechi diferă de descrierea de mai sus în următoarele aspecte. În loc ca fiecare intrare să înceapă cu un octet de contorizare a diferenței de poziție și să se termine cu un zero, valorile octeților de la 0 la 28 indică valori de contorizare a diferenței de poziție de la -14 la 14. Valoarea octetului care indică faptul că urmează un număr diferențial de poziție lung este 0x1e (30), nu 0x80. Numărătorile lungi sunt stocate în ordinea octeților gazdă, care nu este neapărat ordinea octeților rețelei, și în ordinea mărimii cuvântului întreg gazdă, care este de obicei de 4 octeți. Acestea reprezintă, de asemenea, un număr cu 14 mai mic decât valoarea lor. Liniile bazei de date nu au un octet de terminare; începutul liniei următoare este indicat de primul octet al acesteia având valoarea ≤ 30.

În plus, în loc să înceapă cu o intrare fictivă, vechiul format al bazei de date începe cu un tabel de 256 de octeți care conține cele mai frecvente 128 de bigrame din lista de fișiere. O bigramă este o pereche de octeți adiacenți. Octeții din baza de date care au bitul înalt activat sunt indexuri (cu bitul înalt șters) în tabelul bigramelor. Codificarea bigramelor și a numărătorii diferențiale de poziție face ca aceste baze de date să fie cu 2025% mai mici decât noul format, dar nu le face să fie curate pe 8 biți. Orice octet dintr-un nume de fișier care se află în intervalele utilizate pentru codurile speciale este înlocuit în baza de date cu un semn de întrebare, care, nu întâmplător, este metacaracterul din shell pentru a se potrivi cu un singur caracter.

EXEMPLU

Intrare în frcode:
/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo
Lungimea celui mai lung prefix al intrării precedente care trebuie partajat:
0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo

Ieșire de la frcode, cu nulurile din urmă schimbate în linii noi și cu numărul de octeți care pot fi imprimați:

0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
-9 tmp/zoo
(6 = 14 - 8, și -9 = 5 - 14)

RAPORTAREA ERORILOR

Ajutor în internet pentru GNU findutils: <https://www.gnu.org/software/findutils/#get-help>.
Raportați orice erori de traducere la: <https://translationproject.org/team/ro.html>

Raportați orice altă problemă prin intermediul formularului de la sistemul de urmărire a erorilor al GNU Savannah:

Subiectele generale despre pachetul GNU findutils sunt discutate pe lista de discuții bug-findutils:

DREPTURI DE AUTOR

Drepturi de autor © 1994-2022 Free Software Foundation, Inc. Licență GPLv3+: GNU GPL versiunea 3 sau o versiune ulterioară <https://gnu.org/licenses/gpl.html>.
Acesta este software liber: sunteți liber să-l modificați și să-l redistribuiți. Nu există NICIO GARANȚIE, în limitele prevăzute de lege.

CONSULTAȚI ȘI

find(1), locate(1), xargs(1), locatedb(5)

Documentația completă este disponibilă la <https://www.gnu.org/software/coreutils/tsort>
sau local prin intermediul comenzii: info locatedb

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.