Ez egy teljesen haszontalan, a gyakorlatban nem szükséges, de szórakoztató kis poszt a *nix rendszerek könyvtárairól. Hiszen péntek van.
Interjúk során gyakran elhangzanak unalmas kérdések az inódokról, a minden-fájl, amiről alig tud valaki értelmes választ adni. De ha egy kicsit mélyebbre ásunk, érdekes dolgokra bukkanhatunk.
A poszt megértéséhez néhány tézis:
- minden fájl. A könyvtár is fájl
- az inódban a fájl metaadatai tárolódnak, de a fájl neve nem kerül oda
- a fájl neve a könyvtár adataiban tárolódik
- a könyvtár mérete, amelyet az ls parancs mutat, és alapértelmezés szerint 4KB, a könyvtárban lévő fájlok számától és neveik hosszától függ
- nyilvánvaló, hogy minél több fájl van, annál nagyobb a könyvtár mérete
Most pedig a érdekes rész: hozzunk létre egy könyvtárat egymillió fájlal, ellenőrizzük a könyvtár méretét, majd töröljük az összes fájlt, és nézzük meg a könyvtár méretét.
$ mkdir niceDir && cd niceDir
# a tároló sebességétől függően a következő parancs 2-10 percet is igénybe vehet
$ 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 .Mint látni lehet, a könyvtár mérete nem változott, pedig úgy tűnne 🙂
A könyvtár méretének javítása (törlés nélkül) csak az fsck segítségével lehetséges (és a -D opcióval) lecsatolt állapotban.
Amikor pedig utána kezdtem keresni, hogy miért van ez így, kiderült, hogy 10 évvel ezelőtt már foglalkoztak ezzel A Plone 5.2 tartalomkezelő rendszer kiadása
Forrás: habr.com
