Ext2: typy souborů

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Upřesněno označení souborů ve výpisu ls -l.)
(Doplněny úkoly k pevným linkům. Poznámka s rozlišením pojmu "typ souboru" - druh dat vs. typ z hlediska FS upravena a přesunuta na konec.)
 
(Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.)
Řádka 2: Řádka 2:
  
 
Souborový systém ext2 (a souborové systémy z něj vycházející) rozlišují následující typy souborů.
 
Souborový systém ext2 (a souborové systémy z něj vycházející) rozlišují následující typy souborů.
 
<div class="Poznamka">
 
Nepleťte s pojmem „typ souboru“ ve smyslu „jaká data soubor obsahuje“!
 
 
Například typy souborů „obrázek JPEG“, „dokument OpenOffice“, „zvukový soubor OGG“ apod. určují pouze jaká data soubor obsahuje. Z hlediska následujícího rozdělení se ve všech případech jedná o typ „běžný soubor“.
 
</div>
 
  
 
== Běžný soubor (Regular File, -) ==
 
== Běžný soubor (Regular File, -) ==
Řádka 28: Řádka 22:
 
* Počet odkazů jmen daného souboru (počet odkazů) zjistíme ve výpisu <code>ls -l</code> (položka před jménem vlastníka).
 
* Počet odkazů jmen daného souboru (počet odkazů) zjistíme ve výpisu <code>ls -l</code> (položka před jménem vlastníka).
 
* Vysvětletní realizace pevného linku v souborovém systému ext2 viz [[Ext2:_adresáře#Pevn.C3.A9_linky_.28hardlink.29|Ext2:_adresáře &rarr; Pevný link]].
 
* Vysvětletní realizace pevného linku v souborovém systému ext2 viz [[Ext2:_adresáře#Pevn.C3.A9_linky_.28hardlink.29|Ext2:_adresáře &rarr; Pevný link]].
 +
<div class="Poznamka">
 +
;Proč bych chtěl mít dva názvy pro stejný soubor?
 +
* Hodí se to, když chci mít stejný soubor přístupný z&nbsp;více adresářů.
 +
* Třeba soubor <code>BigBangTheory-Season1</code> chci mít v&nbsp;adresářích <code>it-serialy</code>, <code>poslat-frantovi</code> a&nbsp;<code>shledni-dnes-vecer</code>. Mohl bych vytvořit tři kopie souboru, ale zabíraly by mi trojnásobek místa. Je lepší vytvořit pevné linky na tentýž soubor.
 +
* Nebo chci mít soubor <code>dokumentace.docx</code> v&nbsp;adresáři <code>maturitni-prace</code> i&nbsp;<code>to-do</code>. Přitom když změním obsah v&nbsp;jednom adresáři, chci, aby se změna promítla v&nbsp;obou souborech.
 +
</div>
  
 
== Symbolický odkaz (symbolic link, symlink l) ==
 
== Symbolický odkaz (symbolic link, symlink l) ==
 
* Ve výpisu <code>ls -l</code> je označen znakem <code>l</code> a&nbsp;za názvem souboru má šipku a&nbsp;cestu k&nbsp;souboru, na který ukazuje.
 
* Ve výpisu <code>ls -l</code> je označen znakem <code>l</code> a&nbsp;za názvem souboru má šipku a&nbsp;cestu k&nbsp;souboru, na který ukazuje.
* Dá se přirovnat k hypertextovému odkazu na webu nebo k zástupci ve Windows.
+
* Dá se přirovnat k hypertextovému odkazu na webu nebo k&nbsp;zástupci ve Windows.
** V Unixu a GNU/Linuxu ale můžeme psát například i: <code>cd odkaz</code>.
+
** V&nbsp;Unixu a GNU/Linuxu ale linky fungují i v&nbsp;příkazovém řádku.
 +
** Můžeme tedy psát například i: <code>cd ''linkname''</code>.
 
* Ve výpisu <code>ls -l</code> vidíme, na který soubor odkaz ukazuje.  
 
* Ve výpisu <code>ls -l</code> vidíme, na který soubor odkaz ukazuje.  
* Přejmenování či zrušení odkazovaného souboru způsobí nefunkčnost symbolického odkazu.  
+
* Přejmenování či zrušení odkazovaného souboru způsobí nefunkčnost symbolického odkazu (''dangling link'').  
* Lze vytvořit symbolický odkaz odkazující na adresář či na soubor v jiném diskovém oddílu.
+
* Lze vytvořit symbolický odkaz odkazující na adresář či na soubor v&nbsp;jiném diskovém oddílu (to u pevných linků nelze).
* Vytváříme příkazem: <code>ln -s</code>
+
* Vytváříme příkazem: <code>ln -s ''odkazovanySoubor'' ''nazevlinku''</code>
 
<div class="Priklad">
 
<div class="Priklad">
 
  echo ahoj > ahoj.txt
 
  echo ahoj > ahoj.txt
Řádka 44: Řádka 45:
 
  ln -s /media/flash/seznam.txt seznam.txt
 
  ln -s /media/flash/seznam.txt seznam.txt
 
</div>
 
</div>
* Symbolický link si můžeme představit jako soubor, který má v i-node přiřazen speciální typ ''symbolický link'' a v jediném datovém bloku má zapsánu cestu k souboru, na který odkazuje.
+
* Symbolický link si můžeme představit jako soubor, který má v i-node přiřazen speciální typ ''symbolický link'' a v&nbsp;jediném datovém bloku má zapsánu cestu k&nbsp;souboru, na který odkazuje.
 
<div class="Poznamka">
 
<div class="Poznamka">
Všimněte si, že v souborových systémech ext2/3/4 odpovídá velikost souboru u symbolického linku délce cesty.
+
Všimněte si, že v souborových systémech ext2/3/4 odpovídá velikost souboru u symbolického linku délce cesty &mdash; „data souboru“ obsahují cestu k&nbsp;cílovému souboru.
 +
 
 +
Pokud je cesta k&nbsp;odkazovanému souboru krátká, uloží se cesta přímo v&nbsp;i-node a symbolický link nezabírá žádný datový blok. Pokud je cesta delší, uloží se cesta do datového bloku. Srovnete:
 +
$ touch soubor
 +
$ touch abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
 +
$ ln -s soubor s1
 +
$ ln -s abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz s2
 +
$ ls -lis
 +
celkem 4
 +
399148 0 -rw-r--r-- 1 student student  0 dub 27 09:09 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
 +
398178 0 -rw-r--r-- 1 student student  0 dub 27 09:08 soubor
 +
399152 <strong style="color:red">0</strong> lrwxrwxrwx 1 student student  6 dub 27 09:09 s1 -> soubor
 +
399154 <strong style="color:red">4</strong> lrwxrwxrwx 1 student student 78 dub 27 09:10 s2 -> abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
 
</div>
 
</div>
  
Řádka 52: Řádka 65:
 
== Blokové a znakové zařízení (Block device, character device, b resp. c) ==
 
== Blokové a znakové zařízení (Block device, character device, b resp. c) ==
 
* Ve výpisu <code>ls -l</code> je označen znakem <code>b</code> resp. <code>c</code>.
 
* Ve výpisu <code>ls -l</code> je označen znakem <code>b</code> resp. <code>c</code>.
* Jsou to virtuální soubory.
+
* Jedná se o&nbsp;virtuální soubory. Pomocí čtení či zápisu do těchto souborů ve skutečnosti čteme nebo zapisujeme přímo obsah pevného disku či dalších zařízení.
* Zastupují bloková (pevný disk) či znaková (terminál) zařízení, která jsou připojena k počítači.
+
* Například když si chceme zobrazit či zazálohovat obsah Master Boot Recordu (MBR) pevného disku, můžeme přečíst obsah odpovídajícího virtuálního souboru.
 +
* Při čtení ze znakových zařízení se používá vyrovnávací paměť, můžeme tedy číst a&nbsp;zapisovat jednotlivé znaky (například zápis na obrazovku).
 +
* Při práci s&nbsp;blokovými zařízeními je třeba vždy načíst celý blok dat (například u&nbsp;pevného disku jeden sektor).
 
* Obvykle jsou v adresáři: <code>/dev</code>
 
* Obvykle jsou v adresáři: <code>/dev</code>
 
<div class="Priklad">
 
<div class="Priklad">
Řádka 78: Řádka 93:
 
* Jak zjistíte, jestli je soubor hard-link?
 
* Jak zjistíte, jestli je soubor hard-link?
 
* Jak je v linuxových souborových systémech realizován adresář a jak pevný link (viz [[Ext2: adresáře]])?
 
* Jak je v linuxových souborových systémech realizován adresář a jak pevný link (viz [[Ext2: adresáře]])?
 +
* Zkuste vytvořit soubor <code>pokus.txt</code> a pevný link na tento soubor. Ověřte ve výpisu, zda se jedná o pevný link.
 +
* Zkuste vytvořit symbolický link na <code>pokus.txt</code>. Ověřte ve výpisu, zda se jedná o pevný link.
 +
* Bude symbolický link fungovat, když smažete původní soubor? Bude fungovat pevný link? Jak se změní množství obsazeného místa na disku?
 +
 +
 +
<div class="Poznamka">
 +
'''Upozornění:'''
 +
 +
Nepleťte si výše uvedené typy souborů s&nbsp;„typem souboru“ ve smyslu „jaká data soubor obsahuje“!
 +
 +
Například „typy souborů“ „obrázek JPEG“, „dokument OpenOffice“, „zvukový soubor OGG“ apod. určují pouze jaká data soubor obsahuje. Z&nbsp;pohledu výše uvedeného rozdělení se u&nbsp;všech těchto souborů jedná o&nbsp;„běžný soubor“.
 +
</div>
  
  

Aktuální verze z 10. 4. 2024, 06:28


Souborový systém ext2 (a souborové systémy z něj vycházející) rozlišují následující typy souborů.

Obsah

Běžný soubor (Regular File, -)

Adresář (Directory, d)

Pevný odkaz (hardlink)

Proč bych chtěl mít dva názvy pro stejný soubor?
  • Hodí se to, když chci mít stejný soubor přístupný z více adresářů.
  • Třeba soubor BigBangTheory-Season1 chci mít v adresářích it-serialy, poslat-frantovishledni-dnes-vecer. Mohl bych vytvořit tři kopie souboru, ale zabíraly by mi trojnásobek místa. Je lepší vytvořit pevné linky na tentýž soubor.
  • Nebo chci mít soubor dokumentace.docx v adresáři maturitni-praceto-do. Přitom když změním obsah v jednom adresáři, chci, aby se změna promítla v obou souborech.

Symbolický odkaz (symbolic link, symlink l)

echo ahoj > ahoj.txt
ln -s ahoj.txt odkaz
cp odkaz odkaz2
ln -s odkaz odkaz3
ln -s /media/flash/seznam.txt seznam.txt

Všimněte si, že v souborových systémech ext2/3/4 odpovídá velikost souboru u symbolického linku délce cesty — „data souboru“ obsahují cestu k cílovému souboru.

Pokud je cesta k odkazovanému souboru krátká, uloží se cesta přímo v i-node a symbolický link nezabírá žádný datový blok. Pokud je cesta delší, uloží se cesta do datového bloku. Srovnete:

$ touch soubor
$ touch abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
$ ln -s soubor s1
$ ln -s abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz s2
$ ls -lis
celkem 4
399148 0 -rw-r--r-- 1 student student  0 dub 27 09:09 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
398178 0 -rw-r--r-- 1 student student  0 dub 27 09:08 soubor
399152 0 lrwxrwxrwx 1 student student  6 dub 27 09:09 s1 -> soubor
399154 4 lrwxrwxrwx 1 student student 78 dub 27 09:10 s2 -> abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz


Blokové a znakové zařízení (Block device, character device, b resp. c)

Příklady:

  • /dev/stdin
  • /dev/null
  • /dev/sda1


Pojmenovaná roura (named pipe)


Socket (Socket)


Zopakujte si


Upozornění:

Nepleťte si výše uvedené typy souborů s „typem souboru“ ve smyslu „jaká data soubor obsahuje“!

Například „typy souborů“ „obrázek JPEG“, „dokument OpenOffice“, „zvukový soubor OGG“ apod. určují pouze jaká data soubor obsahuje. Z pohledu výše uvedeného rozdělení se u všech těchto souborů jedná o „běžný soubor“.


Související stránky


Použité zdroje:

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje