Toto je zcela zbytečný, v praktické aplikaci nepotřebný, ale vtipný malý příspěvek o adresářích v systémech *nix. Je pátek.
Během rozhovorů často vyvstávají nudné otázky týkající se inodů, všechno-je-souborů, na které málokdo dokáže rozumně odpovědět. Ale když se ponoříte trochu hlouběji, můžete najít zajímavé věci.
Pro pochopení příspěvku pár bodů:
- vše je soubor. adresář je také soubor
- inode ukládá metadata ze souboru, ale název souboru tam není uložen
- název souboru je uložen v datech adresáře
- Velikost adresáře, stejná jako v ls a ve výchozím nastavení je 4 kB, závisí na počtu souborů v adresáři a délce jejich názvů.
- Je zřejmé, že čím více souborů, tím větší velikost adresáře
Nyní je tu ta zajímavá část: vytvoříme adresář s milionem souborů, zkontrolujeme velikost adresáře a poté smažeme všechny soubory a podíváme se na velikost adresáře.
$ mkdir niceDir && cd niceDir
# в зависимости от скорости носителя, следующая команда может занять 2-10 минут
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
Jak vidíte, velikost adresáře se nezměnila, i když by se zdálo :)
Velikost adresáře (aniž byste jej smazali) můžete opravit pouze pomocí fsck (a volby -D) v nepřipojeném stavu.
Ale když jsem šel hledat, proč tomu tak je, ukázalo se, že před 10 lety už takové chování bylo
Zdroj: www.habr.com