(File System) Základní pojmy Běžný uživatel vidí logický systém souborů jako jeden strom. Kořen stromu je kořenový adresář ( / = Root Directory ). Uzly stromu jsou adresáře (d = Directory). Listy stromu jsou: obyčejné soubory (- = File) speciální soubory znakové (c = Character Device) a blokové (b = Block Device) symbolické linky (l = Symbolic Link) roury (p = Pipe) Logický systém souborů je (obvykle) tvořen více fyzickými systémy souborů. predn_03.doc 18.11.01 23:22 1
Příklad: mount /dev/dsk/c0t0d0d3 /home Fyzické systémy souborů Logický systém souborů / / lost+found home etc lost+found home etc passwd group passwd group mount / lost+found user1 user2 lost+found user1 user2 predn_03.doc 18.11.01 23:22 2
Typy fyzických systémů souborů: diskové ( s5, ufs, vxfs, pcfs, hsfs,... ) síťové ( nfs, smb,... ) paměťové ( tmpfs ) virtuální ( procfs, fdfs,... ) Výhody unixové koncepce: za pokrytí logického FS fyzickými FS je odpovědný administrátor pokrytí lze měnit bez vlivu na logický FS možnost zvětšování kapacity logického FS bez změny jeho struktury ohraničení chyby v rámci fyzického FS predn_03.doc 18.11.01 23:22 3
Jména souborů (adresářů) Maximální délka jména závisí na implementaci ( obvykle 255, s5-14 ) Jsou povoleny všechny znaky kromě lomítka (/) Nedoporučené znaky jsou: nezobrazitelné ( <Ctrl>A) znaky interpretované shellem ( *, #, $ ) Poznámky: Malá a velká písmena se rozlišují. Tečka je platný znak. Jména souborů začínající tečkou se: nenahrazují na příkazové řádce při použití znaků * a? nevypisují příkazem ls (jen s přepínačem -a) proto jména konfiguračních souborů obvykle začínají tečkou:.profile,.kshrc,... Jména tečka (.) a dvě tečky (..) jsou rezervována pro:. - aktuální adresář.. - nadřazený adresář predn_03.doc 18.11.01 23:22 4
Adresářová struktura Absolutní (úplná) cesta (Absolute/Full Path) určení cesty k souboru úplným zápisem všech adresářů ( oddělených znaky / ) počínaje kořenovým adresářem (/) Aktuální (pracovní) adresář (Current/Working Directory) zobrazen příkazem pwd hodnota proměnné PWD mění se příkazem cd <nový pracovní adresář> je určen absolutní cestou v každém procesu může být jiný má synonymum (link) tečka (.) synonymum nadřazeného adresáře jsou dvě tečky (..) predn_03.doc 18.11.01 23:22 5
Relativní cesta (Relative Path) nezačíná / určuje cestu k souboru spolu s pracovním adresářem Cesta k adresáři (Path) + jméno souboru (Name) = cesta k souboru (Pathname) Domovský adresář (Home Directory) definován pro každého uživatele po přihlášení je pracovním adresářem jméno uloženo v eviroment proměnné HOME nastaví se jako pracovní příkazem cd bez parametrů obvykle /home/<username> nebo /home/<groupname>/<username> obvykle umožňuje uživateli zápis (vytváření souborů a podadresářů) predn_03.doc 18.11.01 23:22 6
Důležité adresáře (verze SVR4) /bin spustitelné programy (nyní link na /usr/bin) /sbin programy pro start a administraci systému /dev speciální soubory /etc konfigurační soubory (původně i programy) pro administraci systému /home domovské adresáře uživatelů /tmp dočasné soubory /lib knihovny (nyní link na /usr/lib) /kernel jádro systému /opt doplňkové programy které nejsou součástí instalace /usr systémové soubory které nemění svou velikost /var systémové soubory které mění svou velikost predn_03.doc 18.11.01 23:22 7
/usr/ bin spustitelné programy sbin další programy pro start a administraci systému ccs překladač jazyka C include vkládané soubory (.h) lib knihovny share soubory nezávislé na implementaci (např./usr/share/man) ucb programy kompatibility s BSD /var adm logovací soubory log logovací soubory mail poštovní schránky uživatelů spool fronty úloh (lp, cron) predn_03.doc 18.11.01 23:22 8
Práce s adresáři Příkazy: cd [adresář] přepnutí aktuálního adresáře do domovského resp. zadaného pwd výpis cesty k aktuálnímu adresáři mkdir [-p] seznam_adresářů vytvoření adresáře/adresářů rmdir zrušení prázdného adresáře/adresářů ls [přepínače] [seznam_souborů_nebo_adresářů] výpis jmen souborů (adresářů) resp. obsahu adresářů (aktuálního adresáře) -d u adresářů se nevypisuje obsah, ale jméno -a v adresářích se vypisují i soubory začínající tečkou -l dlouhý výpis predn_03.doc 18.11.01 23:22 9
Příklady: $ pwd /home/honza $ echo $HOME /home/honza $ cd / ; pwd / $ cd ; pwd /home/honza $ ls konec t1 testik text vypis $ mkdir d1 $ ls * konec t1 testik text vypis d1: $ ls -d * d1 konec t1 testik text vypis $ predn_03.doc 18.11.01 23:22 10
Princip implementace systému souborů Každý soubor je popsán jedním informačním uzlem (i-node) i-uzel je v rámci fyzického FS jednoznačně určen číslem (i-uzel číslo 2 popisuje kořenový adresář) i-uzel obsahuje vše o souboru kromě jména a dat Na data jsou v i-uzlu odkazy. Vlastní data jsou jinde v rámci fyzického FS. Číslo i-uzlu je spojeno se jménem souboru v souboru typu adresář. predn_03.doc 18.11.01 23:22 11
Příklad: / Vyhledání souboru /etc/passwd i-uzel 2: typ:d data: i-uzel 123: typ:d data: i-uzel 555 typ:- data:... 123 etc...... 555 passwd root:x:0:1:... Důsledky: Soubor může mít více jmen Soubor lze přejmenovat predn_03.doc 18.11.01 23:22 12
Informace o souborech (adresářích) Příkaz ls -l vypíše na každé řádce o jednom souboru/adresáři tyto informace: $ ls -ld?? drwxr-xr-x 2 honza staff 512 Oct 14 22:32 d1 -rwxr-xr-x 1 honza staff 21 Mar 4 2001 t1 $ $ ^ ^ ^ ^ ^ ^ ^ ^ a) b) c) d) e) f) g) h) a) typ - viz výše b) práva - přístupová práva čtení (r), zápisu (w) a provádění (x) pro vlastníka skupinu a ostatní (viz příští přednáška) c) počet odkazů - počet synonym (pevných linků) d) vlastník - jméno vlastníka nebo uid e) skupina - jméno skupiny nebo gid f) délka - délka souboru v bytech nebo velké a malé číslo pro speciální soubory g) datum a čas - datum a čas vytvoření resp. změny souboru h) jméno- jméno souboru predn_03.doc 18.11.01 23:22 13
Rušení, přesun a kopírování souborů a adresářů predn_03.doc 18.11.01 23:22 14
Pevný link Více jmen jednoho souboru tzv. pevný link lze vytvořit příkazem ln Volání: ln puvodní_jméno_souboru nové_jméno_souboru Příkaz vytvoří nový odkaz a inkrementuje čítač počtu odkazů v i-uzlu. Pevné linky lze vytvářet pouze v rámci jednoho fyzického FS (proč?) Nelze vytvářet pevné linky na adresáře (s výjimkou. a..) Nelze vytvářet pevné linky na neexistující soubory. Soubor (data a i-uzel) je jen jeden. Jména jsou rovnocenná (nedá se zjistit, které bylo první) Zrušení souboru s více odkazy ruší odkaz a dekrementuje čítač. Data se uvolní při zrušení posledního odkazu. predn_03.doc 18.11.01 23:22 15
Příklady: $ mkdir a; ls -ld a drwxr-xr-x 2 honza staff 512 Oct 21 21:28 a $ mkdir a/b; ls -ld a drwxr-xr-x 3 honza staff 512 Oct 21 21:28 a $ touch c; ls -li c 21262 -rw-r--r-- 1 honza staff 0 Oct 21 21:28 c $ ln c d; ls -li [cd] 21262 -rw-r--r-- 2 honza staff 0 Oct 21 21:28 c 21262 -rw-r--r-- 2 honza staff 0 Oct 21 21:28 d $ rm c; ls -li d 21262 -rw-r--r-- 1 honza staff 0 Oct 21 21:28 d $... 21262 c...... 21262 d... i-uzel 21262 typ:- data: predn_03.doc 18.11.01 23:22 16
Symbolický link Soubor typu symbolický link (l) obsahuje jméno jiného souboru (v datech nebo přímo v i-uzlu. Při použití symbolického linku se některé operace provádějí s linkem (rm), některé se souborem, na který link ukazuje (vi). Symbolickým linkem lze odkazovat libovolně, tedy i mezi fyzickými syst.souborů. Symbolický link lze vytvořit i na neexistující soubor, chyba se zjistí až při použití linku. Symbolický link může odkazovat na adresář. Lze pomocí něj vytvořit cyklickou cestu (proto je mnoho symb. linků v cestě k souboru hlášeno jako chyba). predn_03.doc 18.11.01 23:22 17
Příklad: $ ln -s d c; ls -li [cd] 21263 lrwxrwxrwx 1 honza staff 1 Oct 21 22:02 c -> d 21262 -rw-r--r-- 1 honza staff 0 Oct 21 21:28 d $... 21263 c...... 21262 d... i-uzel 21263 typ:l data: i-uzel 21262 typ:- data: d predn_03.doc 18.11.01 23:22 18
Určení typu souboru podle obsahu file <seznam_jmen_souborů> vypíše typy souborů podle obsahu: Příklad: $ file?? d1: directory t1: executable /bin/awk script t2: empty file $ Rozdělení obyčejných souborů: Tištitelné: textové (ascii text) skripty Netištitelné binární proveditelný (executable) predn_03.doc 18.11.01 23:22 19
datové (data) Zobrazení obsahu textových souborů nebo jejich částí filtry a editory (viz minulá přednáška) Zobrazení obsahu binárního souboru od [-odxc] (Octal Dump) - výpis obsahu binárního souboru v různých formátech strings výpis textových řetězců z binárního souboru predn_03.doc 18.11.01 23:22 20
Speciální soubory, soubory zařízení (special/device files) Soubory pro práci s periferními zařízeními. Stejné použití jako soubory - jiné vlastnosti. Obvykle umístěny v adresáři /dev, pojmenování často systémově závislé /dev/null - prázdný soubor /dev/console - systémová konzole /dev/tty - aktuální terminál /dev/rdsk/c0t0d0s3 - disk, znakové zařízení /dev/dsk/c0t0d0s3 - disk, blokové zařízení Budou probírány podrobněji později v jiné přednášce. predn_03.doc 18.11.01 23:22 21