See on täiesti kasutu, praktilises rakendamises vajalik, kuid lõbus väike postitus *nix süsteemide kataloogide kohta. Reede ju.
Tööintervjuudel kasutatakse sageli igavaid küsimusi inodide kohta, kus kõik on failid, millele keegi ei oska mõistlikult vastata. Kuid kui sügavamale kaevata, võib leida huvitavaid asju.
Postituse mõistmiseks mõned teesid:
- kõik on fail. kataloog on samuti fail
- inodis hoitakse faili metaandmeid, kuid faili nime seal ei hoita
- faili nimi hoitakse katalooge andmetes
- katalooge suurus, see, mis kuvatakse käsuga ls ja vaikimisi on 4KB, sõltub kataloogis olevate failide arvust ja nende nimede pikkusest
- ilmne on, et mida rohkem faile, seda suurem on katalooge suurus
Ja nüüd huvitav: loome katalooge miljoni failiga, kontrollime katalooge suurust ja seejärel kustutame kõik failid ja vaatame katalooge suurust.
$ mkdir niceDir && cd niceDir
# sõltuvalt kandja kiirusest võib järgmine käsk võtta 2-10 minutit
$ 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 .Nagu võib märgata, ei ole katalooge suurus muutunud, kuigi see võiks tunduda 🙂
Katalooge suuruse parandamiseks (ilma kustutamiseta) saab teha ainult fsck abil (ja valikuga -D) lahti monteeritud seisundis.
Aga kui ma hakkasin otsima, miks see nii on, selgus, et 10 aastat tagasi oli selline käitumine juba lkml. Ja arendajate arvates ei tasu parandamine lihtsalt ära pingutusi.
Allikas: habr.com
