Toto je úplne zbytočný, v praktickej aplikácii nepotrebný, ale vtipný malý príspevok o adresároch v systémoch *nix. Je piatok.
Počas pohovorov sa často vynárajú nudné otázky o inodoch, súboroch všetkého, na ktoré málokto vie rozumne odpovedať. Ale ak sa pohrabete trochu hlbšie, môžete nájsť zaujímavé veci.
Aby ste pochopili príspevok, pár bodov:
- všetko je súbor. adresár je tiež súbor
- inode ukladá metadáta zo 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, rovnaká ako v ls a štandardne 4 kB, 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
Teraz je tu zaujímavá časť: vytvoríme adresár s miliónom 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
# в зависимости от скорости носителя, следующая команда может занять 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 .
Ako vidíte, veľkosť adresára sa nezmenila, aj keď by sa zdalo :)
Veľkosť adresára (bez jeho vymazania) môžete opraviť iba pomocou fsck (a voľby -D) v nepripojenom stave.
Ale keď som išiel hľadať, prečo to tak je, ukázalo sa, že pred 10 rokmi už takéto správanie bolo
Zdroj: hab.com