Aquesta és una petita entrada completament inútil, innecessària en l'aplicació pràctica, però divertida sobre directoris en sistemes *nix. És divendres.
Durant les entrevistes, sovint sorgeixen preguntes avorrides sobre inodes, tot-és-arxius, que poca gent pot respondre amb seny. Però si aprofundeixes una mica més, pots trobar coses interessants.
Per entendre el post, uns quants punts:
- tot és un fitxer. directori també és un fitxer
- l'inode emmagatzema metadades del fitxer, però el nom del fitxer no s'hi guarda
- el nom del fitxer s'emmagatzema a les dades del directori
- La mida del directori, el mateix que es mostra en ls i és de 4Kb per defecte, depèn del nombre de fitxers del directori i de la longitud dels seus noms.
- Òbviament, com més fitxers, més gran serà la mida del directori
Ara aquí hi ha la part interessant: creem un directori amb un milió de fitxers, comprovem la mida del directori i després suprimim tots els fitxers i mirem la mida del directori.
$ 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 .
Com podeu veure, la mida del directori no ha canviat, tot i que sembla :)
Només podeu arreglar la mida d'un directori (sense suprimir-lo) mitjançant fsck (i l'opció -D) en estat desmuntat.
Però quan vaig anar a buscar per què era així, va resultar que fa 10 anys aquest comportament ja ho havia fet
Font: www.habr.com