Adresáře, soubory, linky

  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.

Všechny systémy UNIXového typu mají stejný systém přístupu k souborům a zařízením.

Typy "souborů":

- soubory
- adresáře
- linky
- soubory zařízení

První tři slouží k ukládání dat, poslední typ - soubory zařízení slouží k poskytnutí přístupu k zařízení (device). Soubory mimo uložení dat mohou sloužit ke komunikaci mezi procesy.

Jak poznám typ souboru

Použitím příkazu ls -l.

lrwxrwxrwx   1 root     root          16 Mar 13 08:50 cron -> ../usr/sbin/cron
drwxr-xr-x   2 root     sys          512 Mar 13 12:19 cron.d
-rw-r--r--   1 root     sys         2279 Mar 18  2004 dacf.conf

Písmenko l na začátku označuje link. Písmeno d je pro odlišení adresářů. Pomlčka - označuje soubor.

Inode, jméno a data bloky

Všechny soubory mají své jméno a záznam, kterému se říká inode. Většina souborů pak používá také data bloky.

Jméno souboru je identifikátor, který používáme pro vnější prezentaci souboru směrem k uživateli a programům.
Inody jsou objekty, které používá systém pro záznam informací o souboru. Jméno souboru nesmí být tečka, dvě tečky, a lomítko.

Data bloky jsou jednotky diskového prostoru, které jsou použity pro ukládání obsahu souboru.

Inode se sestává ze dvou částí. První obsahuje informace o souboru jako je jméno, práva, velikost. Druhá část obsahuje ukazatele na datové bloky, které souboru patří. Inody jsou číslované a každý filesystem obsahuje vlastní seznam inodů. Při vytváření filesystemu se generuje kompletní list inodů.

Soubory

Soubory jsou k ukládání dat. Kdo by to řekl :).

Adresáře

Adresář ukládá informace o uložených souborech. Vlastní soubory neobsahuje...
Jméno adresáře je spjato s inodem stejně jako u souboru, ale v data blocích pak není uložen obsah souboru, ale seznam jmen a inodů dalších objektů.

Symbolické linky

Symbolický link je soubor, který ukazuje na jiný soubor. Obsahem data bloku je tedy jméno cílového souboru. Velikost symbolického linku odpovídá počtu znaků cesty a názvy cílového souboru. Příklad - velikost je 11 byte.

ls -la
lrwxrwxrwx   1 root  root    11 2005-09-12 16:06 cdrom -> media/cdrom

Symbolické linky mohou ukazovat na soubor, adresář, jiný symbolický link nebo na speciální soubory. Cesta linku může být relativní i absolutní.

Vytvoření linku:

ln -s   existující_cesta      nově_vytvořený_soubor_linku

Soubory zařízení

Oproti klasickým souborům, adresářům a symbolickým linkům, soubory zařízení poskytují přístup na nějaké systémové zařízení. V inodu souboru jsou uložena čísla, podle kterých jádro rozezná zařízení. Místo velikosti souboru ve výpisu se zde vypisují dvě čísla oddělená čárkou. Čísla jsou nazývaná major a minor.

.....
brw-r-----   1 root     sys       32, 72 Feb 23  2006 sd@a,0:a
crw-r-----   1 root     sys       32, 72 Feb 23  2006 sd@a,0:a,raw
.....

Major číslo určuje driver, který obsluhuje přístup k zařízení. Minor číslo slouží k odlišení více zařízení stejného druhu. Soubory zařízení jsou v Solarisu vytvořeny po rekonfiguračním bootu (z ok promptu příkazem boot -r, ze Solarisu reboot -- -r). Pokud potřebujete vytvořit soubor zařízení pro nově připojený device, můžete použít příkaz mknod, devfsadm. Ten zkusí nahrát všechny ovladače zařízení a pokud najde nové, tak se vytvoří soubor zařízení.

Soubory zařízení můžeme rozdělit na dvě kategorie. Znakové (raw) a blokové (block). Podle toho do které kategorie soubor zařízení patří se mění i způsob jakým se k zařízení přistupuje.

Znakové soubory zařízení

Ve výpisu jsou značené jako c. Pro přístup k zařízení přes tento soubor se použije nejmenší adresovatelná jednotka zařízení. V případě pevného disku je to jeden sektor (512 bajtů).

crw-r-----   1 root     sys      136,  0 Feb 23 15:31 dad@0,0:a,raw

Blokové soubory zařízení

Ve výpisu jsou značené jako b. Pro přístup k zařízení se použije definovaná velikost bloku, která je závislá na zařízení. U pevného disku a souborového systému ufs je to implicitně 8 Kbyte.

brw-r-----   1 root     sys      136,  0 Feb 23 15:31 dad@0,0:a

Hard Linky

Hard link je pevná asociace mezi inodem a datablokem. U každého inodu je uložena i informace o počtu hard linků. Z výpisu ls -l se počet hardlinků nalézá mezi výpisem práv a vlastníkem.

-rw-r--r--   1 root     other          0 Jan  2 04:20 file2

Soubor file2 používá jeden hard link. Nový hard link vytvoříme následovně:

ln file2 file3

A výsledek:

-rw-r--r--   2 root     other          0 Jan  2 04:22 file2
-rw-r--r--   2 root     other          0 Jan  2 04:22 file3

Pokud teď zkusíte například přes editor vi zapsat něco do souboru file2, tak zjistíte že je to samé i v souboru file3, protože oba inody ukazují na stejný datablok. To lze snadno ověřit pomocí ls -li. Číslo uvedené jako první ve výpisu je číslo inodu.

root@demo-141 # ls -li  
......
    107541 -------r--+  1 root     other          4 Feb 23  2006 file
    107928 -rw-r--r--   2 root     other          6 Jan  2 04:25 file2
    107928 -rw-r--r--   2 root     other          6 Jan  2 04:25 file3
    107544 -rw-r--r--   1 root     other         28 Feb 23  2006 prava
......