Ext2: typy souborů

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky)
 
(Přidány pevné a symbolické linky ve Windows.)
 
(Není zobrazeno 10 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]][[Category:Informatika]][[Category:OSY]]
+
[[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Ukládání dat]]
  
 
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, -) ==
* Normální soubor (regular file), je označen znakem -
+
* Normální soubor (regular file).
 +
* Ve výpisu <code>ls -l</code> je označen znakem <code>-</code>.
 
* je to klasický soubor, na který jsme zvyklí (dokument, aplikace, obrázek, nebo cokoli jiného).
 
* je to klasický soubor, na který jsme zvyklí (dokument, aplikace, obrázek, nebo cokoli jiného).
  
 
== Adresář (Directory, d) ==
 
== Adresář (Directory, d) ==
* Ve Windows se používá jako synonymum pojem složka (folder)
+
* Ve Windows se používá jako synonymum pojem složka (folder).
* Ve výpisu ls -l ji označuje znak d
+
* Ve výpisu <code>ls -l</code> ji označuje znak <code>d</code>.
 
* V unixovém pojetí je adresář speciálním druhem souboru.
 
* V unixovém pojetí je adresář speciálním druhem souboru.
 +
* Vysvětletní realizace adresáře v souborovém systému ext2 viz [[Ext2: adresáře]].
  
 
== Pevný odkaz (hardlink) ==
 
== Pevný odkaz (hardlink) ==
* Ve výpisu ls není nijak označen.  
+
* Ve výpisu <code>ls</code> není nijak označen, resp. je označen jako běžný soubor.  
 
* Je to prostě jiné jméno pro soubor (který je na disku pouze jednou).  
 
* Je to prostě jiné jméno pro soubor (který je na disku pouze jednou).  
 
* Jedná se vlastně o druhé jméno pro existující i-node.
 
* Jedná se vlastně o druhé jméno pro existující i-node.
 
* Pevné odkazy lze vytvářet pouze v rámci jednoho souborového systému (číslo i-node je unikátní pouze v rámci jednoho FS).
 
* Pevné odkazy lze vytvářet pouze v rámci jednoho souborového systému (číslo i-node je unikátní pouze v rámci jednoho FS).
 
* Vytvoříme příkazem: <code>ln</code>
 
* Vytvoříme příkazem: <code>ln</code>
* Počet odkazů jmen daného souboru (počet odkazů) zjistíme ve výpisu ls -l (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]].
 +
<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) ==
* Označujeme znakem 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.
* 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
ln -s ahoj.txt odkaz
+
ln -s ahoj.txt odkaz
cp odkaz odkaz2
+
cp odkaz odkaz2
ln -s odkaz odkaz2
+
ln -s odkaz odkaz3
 +
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&nbsp;jediném datovém bloku má zapsánu cestu k&nbsp;souboru, na který odkazuje.
 +
<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 &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>
 +
  
 
== Blokové a znakové zařízení (Block device, character device, b resp. c) ==
 
== Blokové a znakové zařízení (Block device, character device, b resp. c) ==
* Je označeno znakem b (respektive c).  
+
* 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">
 
Příklady:
 
Příklady:
*/dev/stdin
+
* <code>/dev/stdin</code>
*/dev/null
+
* <code>/dev/null</code>
*/dev/sda1
+
* <code>/dev/sda1</code>
 
</div>
 
</div>
 +
  
 
== Pojmenovaná roura (named pipe) ==
 
== Pojmenovaná roura (named pipe) ==
Řádka 57: Řádka 82:
 
* Běžně roury jsou pouze dočasné, můžeme jim však přiřadit jméno v souborovém systému.
 
* Běžně roury jsou pouze dočasné, můžeme jim však přiřadit jméno v souborovém systému.
 
* Vytváříme příkazem: <code>mkfifo</code>
 
* Vytváříme příkazem: <code>mkfifo</code>
 +
  
 
== Socket (Socket) ==
 
== Socket (Socket) ==
 
* Slouží ke komunikaci mezi procesy a to buďto na lokálním stroji, nebo mezi vzdálenými stroji, po síti. Narozdíl od rour podporují oboustrannou komunikaci.
 
* Slouží ke komunikaci mezi procesy a to buďto na lokálním stroji, nebo mezi vzdálenými stroji, po síti. Narozdíl od rour podporují oboustrannou komunikaci.
 +
  
 
== Zopakujte si ==
 
== Zopakujte si ==
Řádka 65: Řádka 92:
 
* Jak zjistíte, na jaký soubor ukazuje sym-link?
 
* Jak zjistíte, na jaký soubor ukazuje sym-link?
 
* 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]])?
 +
* 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>
 +
 +
 +
== Pevné a symbolické linky ve Windows ==
 +
 +
* Souborový systém NTFS ve Windows podporuje pevné a symbolické linky už dlouho, ale dříve neměl uživatel možnost linky vytvářet.
 +
* V&nbsp;aktuálních verzích Windows (rok 2024) lze použít příkaz <code>mklink</code>.
 +
 +
 +
== Související stránky ==
 +
* [[Ext2: adresáře]]
 +
  
 
== Použité zdroje: ==
 
== Použité zdroje: ==
 
* [http://www.owebu.cz/linux/vypis.php?clanek=564 Typy souborů: owebu.cz > Linux (Strákna již není dostupná!)]
 
* [http://www.owebu.cz/linux/vypis.php?clanek=564 Typy souborů: owebu.cz > Linux (Strákna již není dostupná!)]

Aktuální verze z 11. 11. 2024, 15:44


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“.


Pevné a symbolické linky ve Windows


Související stránky


Použité zdroje:

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