Ext2: typy souborů

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Pevný odkaz (hardlink): Příklad - k čemu je pevný link.)
(Doplněno podrobnější vysvětlení implementace symlinku.)
Řádka 37: Řádka 37:
 
== 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 50: Řádka 51:
 
  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>
  

Verze z 27. 4. 2022, 07:13


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

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

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


Související stránky


Použité zdroje:

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