locatedb

Autres langues

Langue: pl

Autres versions - même langue

Version: \" (openSuse - 09/10/07)

Section: 5 (Format de fichier)

NAZWA

locatedb - bazy nazw plików z kompresj± pocz±tków

OPIS

Ta strona podrêcznika opisuje format baz danych nazw plików dla locate w wersji GNU. Bazy nazw plików zawieraj± listy plików, istniej±cych w szczególnych drzewach katalogów w momencie ostatniej aktualizacji baz. Mo¿e istnieæ wiele baz danych nazw plików. U¿ytkownicy mog± wybraæ bazy, które przeszukuje locate, pos³uguj±c siê zmienn± ¶rodowiskow± lub opcj± wiersza poleceñ; zobacz locate(1L). Administrator systemu mo¿e wybraæ czêsto¶æ, z jak± aktualizowane s± bazy, oraz katalogi, dla których zawieraj± zapisy. Normalnie bazy nazw plików zaktualizowane s± przez okresowe uruchamianie programu updatedb, zwykle noc±; zobacz updatedb(1L). updatedb uruchamia program o nazwie frcode kompresuj±cy listê nazw plików przy u¿yciu front-compression [kompresji pocz±tków], redukuj±cej rozmiar bazy danych 4 do 5-krotnie. Front-compression (znana równie¿ jako incremental encoding [kodowanie przyrostowe]) dzia³a wed³ug nastêpuj±cych zasad. Pozycje w bazie danych stanowi± posortowan± listê (dla wygody u¿ytkowników nie rozró¿niaj±cymi wielko¶ci znaków). Poniewa¿ lista jest posortowana, prawdopodobnie ka¿da z jej pozycji posiada wspólny przedrostek (³añcuch pocz±tkowy) z pozycj± poprzedni±. Ka¿da pozycja bazy rozpoczyna siê bajtem licznika ró¿nicy offsetu. Jest to dodatkowa liczba znaków przedrostka pochodz±cego z poprzedniej pozycji bazy, jaka powinna byæ zastosowana ponad liczbê znaków, jakiej u¿ywa poprzednia pozycja w stosunku do jej z kolei poprzednika. (Licznik ten mo¿e byæ ujemny.) Po liczniku nastêpuje ograniczona znakiem null koñcówka ASCII --- czê¶æ nazwy, która nastêpuje po wspólnym przedrostku. Je¶li licznik ró¿nicy offsetu jest wiêkszy ni¿ mo¿liwy do przechowania w pojedynczym bajcie (+/-127), to bajt posiada warto¶æ 0x80, a licznik nastêpuje w s³owie dwubajtowym, z bajtem starszym jako pierwszym (sieciowy porz±dek bajtów). Ka¿da baza danych rozpoczyna siê od sztucznej pozycji dla pliku o nazwie `LOCATE02'. locate sprawdza ten zapis, by upewniæ siê, ¿e plik bazy posiada poprawny format; ignoruje te pozycjê podczas przeszukiwañ. Bazy danych nie mog± byæ sklejane (³±czone), nawet je¶li ze wszystkich baz oprócz pierwszej usuniêto pierwsz± (sztuczn±) pozycjê. Wynika to st±d, ¿e licznik ró¿nicy offsetu pierwszego wpisu pochodz±cego z drugiej i kolejnych baz bêdzie nieprawid³owy. Istnieje równie¿ stary format bazy danych, u¿ywany przez uniksowe programy locate i find oraz ich wcze¶niejsze wydania GNU. W celu utworzenia baz w starym formacie updatedb uruchamia programy o nazwach bigram i code. Stary format ró¿ni siê od powy¿szego opisu w nastêpuj±cy sposób. W nowym formacie ka¿da z pozycji zaczyna siê od licznika ró¿nicy offsetu i koñczy siê bajtem null. W starym formacie warto¶ci bajtu od 0 do 28 wskazuj± na licznik ró¿nicy offsetu od -14 do 14. Warto¶ci± bajtu wskazuj±c±, na to ¿e wystêpuje po niej d³ugi licznik jest 0x1e (30), nie za¶ 0x80. D³ugie liczniki przechowywane s± w porz±dku bajtów hosta, który niekoniecznie jest sieciowym porz±dkiem bajtów, oraz o rozmiarze s³owa integer hosta, zwykle maj±cym 4 znaki. One tak¿e reprezentuj± licznik o 14 mniejszy od ich warto¶ci. Wiersze bazy danych nie posiadaj± bajtu ogranicznika; pocz±tek nastêpnego wiersza wskazywany jest jego pierwszy bajt o warto¶ci <= 30. Poza tym, zamiast rozpoczynania siê fikcyjn± pozycj±, stary format bazy danych rozpoczyna siê od 256 bajtowej tablicy zawieraj±cej 128 najczê¶ciej wystêpuj±cych dwuznaków (bigram) w li¶cie plików. Dwuznak w tym kontek¶cie jest par± s±siednich bajtów. Bajty w bazie danych posiadaj±ce ustawiony starszy bit s± indeksami (z wyczyszczonym starszym bitem) do tablicy dwuznaków. Kodowanie dwuznaków i liczniki ró¿nicy offsetu powoduj±, ¿e bazy te s± o 20-25% mniejsze w porównaniu z nowym formatem. Nie s± jednak czysto 8-bitowe. Ka¿dy z bajtów nazwy pliku, przypadaj±cy na zakres u¿ywany dla kodów specjalnych, zastêpowany jest w bazie przez znak zapytania, co nieprzypadkowo stanowi maskê pow³oki dopasowuj±c± pojedynczy znak.

PRZYK£AD




Dane wej¶ciowe do frcode:

/usr/src

/usr/src/cmd/aardvark.c

/usr/src/cmd/armadillo.c

/usr/tmp/zoo



D³ugo¶æ najd³u¿szego wspólnego przedrostka z poprzedniego zapisu:

0 /usr/src

8 /cmd/aardvark.c

14 rmadillo.c

5 tmp/zoo



Dane wynikowe z frcode, z koñcowymi znakami null zamienionymi na znaki nowej linii i zmianie liczby bajtów na postaæ drukowaln±:

0 LOCATE02

0 /usr/src

8 /cmd/aardvark.c

6 rmadillo.c

-9 tmp/zoo



(6 = 14 - 8, a -9 = 5 - 14)

ZOBACZ TAK¯E

find(1L), locate(1L), locatedb(5L), xargs(1L).
Znajdowanie plików (dokumentacji Info on-line lub drukowanej)