La dimensione delle directory non vale i nostri sforzi.

Questo è un piccolo post divertente, completamente inutile e poco pratico, sui directory nei sistemi *nix. È venerdì, dopo tutto.

Durante i colloqui di lavoro, spesso compaiono domande noiose sugli inode e sul fatto che tutto sia un file, a cui pochi sanno rispondere in modo sensato. Ma se si scava un po' più a fondo, si possono scoprire cose curiose.

Per comprendere il post, ecco alcuni punti chiave:

  • tutto è un file. una directory è anch'essa un file.
  • in un inode sono memorizzati i metadati di un file, ma il nome del file non è memorizzato lì.
  • il nome del file è memorizzato nei dati della directory.
  • la dimensione della directory, quella che viene mostrata con il comando ls e che per default è di 4KB, dipende dal numero di file nella directory e dalla lunghezza dei loro nomi.
  • è ovvio che più file ci sono, maggiore sarà la dimensione della directory.

E ora la parte interessante: creiamo una directory con un milione di file, controlliamo la dimensione della directory e poi cancelliamo tutti i file e osserviamo la dimensione della directory.

$ mkdir niceDir && cd niceDir
# a seconda della velocità del supporto, il comando seguente potrebbe richiedere 2-10 minuti
$ 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 .

Come si può notare, la dimensione della directory non è cambiata, anche se sembrerebbe 🙂

Riparare la dimensione della directory (senza eliminare) è possibile solo con fsck (e l'opzione -D) in uno stato smontato.

E quando ho iniziato a cercare il perché, mi sono accorto che 10 anni fa questo comportamento era già discusso in lkml. E secondo gli sviluppatori, la correzione semplicemente non vale lo sforzo coinvolto.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster