Hijerarhija datotečnog sustava

Izvor: HrOpenWiki
Inačica od 22:32, 23. veljače 2009. koju je unio/unijela 4ndY (razgovor | doprinosi)

Skoči na: orijentacija, traži

Linux je naslijedio hijerarhiju (strukturu) datotečnog sustava od Unixa iako ne potpuno dosljedno (ovisi od distribucije do distribucije).

Ideja sortiranja datoteka

Prije nego krenemo dobro je imati u glavi:

  • datoteka (eng. file) je neki podatak ili program, ukratko - nositelj sadržaja;
  • direktorij ili mapa (eng. folder) je ladica koja objedinjuje datoteke, ali samostalno ne predstavlja nikakav sadržaj.

I to je osnovna zamisao svega: imamo datoteke koje treba rasporediti po direktorijima radi lakšeg snalaženja, ali i efikasnijeg funkcioniranja sustava.

Kako rasporediti alat?

Razlikujemo dva logička pristupa rasporedu podataka:

  1. samodostatna pakiranja u kojima na jedno mjesto stavljamo jedan program i sve njegove popratne datoteke, biblioteke i pomoćne programe;
  2. pakiranja datoteka po svrsi i tipu u kojima se jedan tip datoteka nalazi unutar jednog paketa makar ih koriste različiti programi (npr. biblioteke svih programa se nalaze unutar direktorija biblioteke).

Prednost prvog pristupa je u tome da imamo funkcionalno sve na jednom mjestu (kao da držimo sve za popravljati kosilicu na jedno mjestu - odmah vidimo čime raspolažemo), no nedostatak je u tome što imamo puno duplikata (ključ 15 i čekić za popravljat kosilicu u jednoj ladici i isti takav ključ i čekić za popravljat motornu pilu u drugoj ladici). U računalu se taj nedostatak manifestira kao trošenje diskovnog prostora.

Prednost drugog pristupa je u tome da je puno efikasniji na prostoru (ako postoji negdje ključ 15, onda ćemo ga koristiti za koju god nam namjenu treba i on će uvijek stajati u ladici za ključeve), međutim stvari treba tada tražiti što je i glavni nedostatak. Međutim, računalo puno lakše traži nego mi... tako da drugi pristup računalu i ne predstavlja neki problem kao čovjeku.

Dakako, osim nabrojanih svaki pristup ima i drugih prednosti i nedostataka (no njih nećemo navoditi jer se to tiče direktno funkcioniranja računala). Kako uvijek u takvim situacijama biva, uglavnom se koristi miješani pristup koji uzima najbolje od oba, ali uz pokoju manu. Teško je reći koji je pristup generalno bolji, jer sve ovisi o situaciji i namjeni.

Windows platforma više naginje prvom pristupu: većina programa se standardno nalazi u svojim direktorijima unutar direktorija Program Files, a jedino se biblioteke stavljaju na zajedničkom mjesto (dll datoteke). Unix sustavi imaju drugačiju filozofiju. Unix se sastoji od puno malih alata koji rade zajedno da bi napravili određeni zadatak i tako se programi međusobno koriste, a da bi se lakše našli svi se nalaze na jednom ili samo par mjesta. Također biblioteke imaju svoje zajedničko mjesto, pa ako neki program treba neku biblioteku ide tražiti među biblioteke, a ne po cijelom sustavu.

Hijerarhija datoteka u Linuxu

Hijerarhija (raspored datoteka po direktorijima) na Linuxu je više-manje standardizirana i možemo je ilustrirati pomoću drveta koje se grana od debla prema krošnji.

Pregled osnovnih direktorija

Deblo u ovom slučaju je tzv. korijenski (eng. root) direktorij (oznaka /). On je prvi i ne nalazi se ni u jednom drugom direktoriju.

Izgled i značenja pojedinih direktorija u stablu predočena su u ovoj tabeli:

Direktorij Opis
/ Primarna hijerarhija root direktorij od cijelokupne hijerarhije sistema.
/bin/ Datoeke bitnih naredbi na nivou Single user moda, za sve korisnike (npr. cat, ls, cp).
/boot/ Boot loader datoteke (npr. kernel, GRUB datoteke).Često na posebnoj particiji.
/dev/ Specijalne datoteke uređaja).
/etc/ Konfiguracijske datoteke sistema
/etc/opt/
Konfiguracijske datoteke za /opt/.
/etc/X11/
Konfiguracijske datoteke za X Window System.
/etc/sgml/
Konfiguracijske datoteke za SGML.
/etc/xml/
Konfiguracijske datoteke za XML.
/home/ Korisnički home direktoriji - sadrže korisničke privatne podatke i podešenja. Često na posebnoj particiji.
/lib/ Bitne biblioteke za programe iz /bin/ i /sbin/.
/media/ Točke montiranja za izmjenjljive medije kao npr. CD-ROM (od FHS-2.3).
/mnt/ Privremeno montirani datotečni sustavi.
/opt/ Neobavezni aplikacijski paketi.
/proc/ Virtualni datotečni sustav za prikaz rada kernela i procesa u obliku tekstualnih datoteka
/root/ Home direktorij od root korisnika.
/sbin/ Bitne sistemske datoteke (npr., init, route, ifup).
/srv/ Specifični podaci posluženi od strane sistema..
/tmp/ Privremeni podaci, koji obično ne opstaju nakon reboota računala.
/usr/ Sekundarna hijerarhija za korisničke podatke; sadrži glavninu više korisničkih alata i aplikacija.
/usr/bin/
Manje bitne naredbe (nepotrebne u Single user modu); za sve korisnike.
/usr/include/
Standardne include datoteke .
/usr/lib/
Biblioteke od programa u /usr/bin/ i /usr/sbin/.
/usr/sbin/
Manje bitne sistemske datoteke (npr. daemoniza različite servise.
/usr/share/
Arhitekturno-neovisne (dijeljene) datoteke.
/usr/src/
Datoteke izvornog koda (npr. kernelov izvorni kod).
/usr/X11R6/
X Window System, Verzija 11, izdanje 6.
/usr/local/
Tercijalna hijerarhija za lokalne podatke. Strogo prema standardu, /usr/local/ služi za podatke koji moraju biti pohranjeni na lokalnom računalu (suprotno od /usr/, koji mogu biti montirani preko mreže.
/var/ Promjenjljive datoteke kao što su log-ovi, spool-ovi isl.
/var/lib/
Podaci koji se mijenjaju pripadajućim programima (npr. baze podataka).
/var/lock/
Zaključane datoteke. Datoteke koje drže tragove o programima koji se izvršavaju.
/var/log/
Log datoteke.
/var/mail/
Korisnički e-mail sandučići.
/var/run/
Informacije o sistemu od zadnjeg pokretanja.
/var/spool/
Spool za zadatke koji trebaju tek biti učinjeni.
/var/tmp/
Privremene datoteke koje trebaju preživjeti reboot računala.

Dodatni (nestandardni) direktoriji

Neke preporuke

Što ako se nešto nađe na krivom mjestu?

Standard postoji da bi svi imali na kraju koristi od toga. Međutim, neki autori aplikacija misle da znaju bolje i izmišljaju toplu vodu ili se jednostavno ne drže standarda jer ga ne znaju ili su lijeni. To se često može vidjeti kod na Windows platformi: iako je Microsoft namijenio Program Files za sve korisničke programe, mnogi programi se instaliraju drugdje (ili daju korisniku da ih instalira na neko svoje mjesto), a biblioteke i poprate datoteke razbacaju još koje kuda po sustavu. To je dakako loše, jer ubrzo nastaje takav nered u sustavu da se više nitko ne može snaći. Microsoft je tu samo kriv što ne provodi strože ta pravila koja je propisao.

U Linuxu, ako se neka datoteka nalazi na krivom mjestu (tamo gdje ne bi trebala, tj. ne po pravilima te Linux distribucije) onda je greška (bug) i treba je prijaviti. Drugi Unix kompatibilni sustavi često kritiziraju Linux što se sam ne drži originalnog Unix standarda.

Zaključak

Ako neki program nudi određenu funkcionalnost i to radi dobro, onda ga je logično iskoristiti u svom programu, a ne razvijati vlastito rješenje. Međutim, ako ne mogu svi korisnici imati pristup tom pomoćnom programu ili ako postoji mogućnost da se taj pomoćni program prestane razvijati onda ga i nije logično koristiti. No Linux je projekt iz domene slobodnog softvera i kao takav ti nedostaci nestaju (u jednoj mjeri): svi programi su pod slobodnim licencama i može ih koristiti svako (čak su mogući automatski sustavi koji dobavljaju te programe iz zajedničkih repozitorija, pogledaj upravitelji paketima) te je moguće preuzeti izvorni kod i nastaviti razvijati program za svoje potrebe ukoliko originalni projekt stane s razvojem ili krene drugim pravcem (tako ne postoji negativna strana ovisnosti o drugima). Kad su stvari tako posložene, onda je jasno zašto je Linux sustav u kojem više programa radi zajedno da bi izvršilo neki zadatak. Shodno tome, Linuxu više odgovara pristup razvrstavanja datoteka po tipu, nego u samodostatne cjeline pa takav pristup (hijerarhiju) i koristi.

Linuxova hijerarhija datotečnog sustava vjerojatno nije jednostavna ni intuitivna početnicima, ali za sad dobro radi. Vjerojatno ima načina da se ta struktura poboljša (npr. da se koriste duža imena), ali bi se tada pokidala kompatibilnost s Unixom, što se za sada ne planira, iako ima distribucija koje su krenule tim putem, npr. GoboLinux. No onome tko se želi malo bolje upoznati s Linux sustavom upoznavanje ove hijerarhije ne bi trebao predstavljati problem, a omogućit će mu bolje snalaženje unutar samog sustava i otkriti da iza te strukture stoje zapravo dobri razlozi.

Poveznice i reference