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
Kilde: www.habr.com