Toto je úplne zbytočný, prakticky nepoužiteľný, ale zábavný malý príspevok o adresároch v systémoch *nix. Predsa len je piatok.
Na pohovoroch sa často objavujú nudné otázky o inódoch, všetko-jeden-súbor, na ktoré málokto môže rozumne odpovedať. Ale ak sa ponoríme trochu hlbšie, môžeme nájsť zaujímavé veci.
Na pochopenie príspevku trochu tezí:
- všetko je súbor. adresár je tiež súbor
- v inóde sa uchovávajú meta-dáta súboru, ale názov súboru tam nie je uložený
- názov súboru je uložený v údajoch adresára
- veľkosť adresára, tá, ktorá sa zobrazuje v ls a predvolene je 4KB, závisí od počtu súborov v adresári a dĺžky ich názvov
- je zrejmé, že čím viac súborov, tým väčšia veľkosť adresára
A teraz niečo zaujímavé: vytvoríme adresár s milionom súborov, skontrolujeme veľkosť adresára a potom vymažeme všetky súbory a pozrieme sa na veľkosť adresára.
$ mkdir niceDir && cd niceDir
# v závislosti od rýchlosti úložiska, nasledujúci príkaz môže trvať 2-10 minút
$ 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 2. aug 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M 2. aug 13:37 .Ako si môžete všimnúť, veľkosť adresára sa nezmenila, hoci by sa to mohlo zdať 🙂
Opraviť veľkosť adresára (bez odstránenia) je možné iba pomocou fsck (a voľby -D) v odmontovanom stave.
A keď som sa išiel hľadať, prečo je to tak, zistil som, že pred 10 rokmi takéto správanie už v lkml. A podľa názoru vývojárov oprava jednoducho nestojí za vynaložené úsilie.
Zdroj: habr.com
