GNU/Linux >> Znalost Linux >  >> Linux

Jaký je koncept vytvoření souboru s nula bajty v Linuxu?

Soubor jsou (zhruba) tři samostatné věci:

  • "inode", struktura metadat, která sleduje, kdo vlastní soubor, oprávnění a seznam bloků na disku, které skutečně obsahují data.
  • Jedna nebo více položek adresáře (názvů souborů), které ukazují na tento inode
  • Samotné bloky dat

Když vytvoříte prázdný soubor, vytvoříte pouze inode a položku adresáře ukazující na tento inode. Totéž pro řídké soubory (dd if=/dev/null of=sparse_file bs=10M seek=1 ).

Když vytvoříte pevné odkazy na existující soubor, vytvoříte pouze další položky adresáře, které ukazují na stejný inode.

Zde jsem věci zjednodušil, ale chápete.


touch vytvoří inode a ls -i nebo stat zobrazí informace o inodu:

$ touch test
$ ls -i test
28971114 test
$ stat test
  File: ‘test’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 28971114    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/1000)   Gid: ( 1000/1000)
Access: 2017-03-28 17:38:07.221131925 +0200
Modify: 2017-03-28 17:38:07.221131925 +0200
Change: 2017-03-28 17:38:07.221131925 +0200
 Birth: -

Všimněte si, že test používá 0 bloků. K uložení zobrazených dat používá inode několik bajtů. Tyto bajty jsou uloženy v tabulce inodů. Podívejte se na stránku ext2, kde najdete příklad struktury inodů.


ls (nebo dobře, stat(2) systémové volání) vám sdělí velikost obsahu souboru. To, kolik místa souborový systém potřebuje pro vedení účetnictví, není součástí a jako detail implementace to není něco, co by programy obecně měly starat se nebo o tom dokonce vědět. Zviditelnění detailů implementace by snížilo užitečnost abstrakce souborového systému.


Linux
  1. Jaký je účel souboru .bashrc v Linuxu

  2. Jaké je omezení maximálního počtu otevřených souborů v systému Linux?

  3. Odstraňte soubor v systému Linux pomocí čísla inodu

  1. Linux – Jaké jsou různé způsoby nastavení oprávnění k souborům atd. na Gnu/linux?

  2. Co je ekvivalentní příkazu Linux File pro Windows?

  3. Jaké souborové systémy v Linuxu ukládají čas vytvoření?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Zkontrolujte stav souboru v systému Linux pomocí příkazu stat

  3. Začínáme s příkazem tac systému Linux