Størrelsen på mapperne er ikke vores indsats værd

Dette er et fuldstændig ubrugeligt, unødvendigt i praktisk anvendelse, men sjovt lille indlæg om mapper i *nix-systemer. Det er fredag.

Under interviews opstår der ofte kedelige spørgsmål om inoder, alt-er-filer, som de færreste kan svare fornuftigt på. Men hvis du graver lidt dybere, kan du finde interessante ting.

For at forstå indlægget, et par punkter:

  • alt er en fil. bibliotek er også en fil
  • inoden gemmer metadata fra filen, men filnavnet gemmes ikke der
  • filnavnet gemmes i biblioteksdataene
  • Størrelsen på mappen, den samme som vises i ls og er 4Kb som standard, afhænger af antallet af filer i mappen og længden af ​​deres navne
  • Jo flere filer, jo større er mappestørrelsen naturligvis

Og nu det interessante: vi opretter en mappe med en million filer, kontrollerer størrelsen på mappen og sletter derefter alle filerne og ser på størrelsen på mappen.

$ 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 .

Som du kan se, har mappestørrelsen ikke ændret sig, selvom det ser ud til :)

Du kan kun rette størrelsen af ​​en mappe (uden at slette den) ved hjælp af fsck (og -D-indstillingen) i en ikke-monteret tilstand.

Men da jeg gik for at lede efter, hvorfor det var sådan, viste det sig, at det allerede havde denne adfærd for 10 år siden diskuteret i lkml. Og ifølge udviklerne er rettelsen simpelthen ikke besværet værd.

Kilde: www.habr.com

Tilføj en kommentar