Madhësia e direktorive nuk ia vlen përpjekjet tona

Ky është një postim i vogël, plotësisht i padobishëm dhe i panevojshëm për aplikim praktik, por argëtues për direktoritë në sistemet *nix. Fundjava po vjen.

Në intervistat e punës shpesh shfaqen pyetje të mërzitshme për inodet, gjithçka është skedar, për të cilat pak njerëz janë në gjendje të përgjigjen në mënyrë të arsyeshme. Por nëse thellohesh pak më shumë, mund të gjesh gjëra interesante.

Për të kuptuar postimin, disa pikë:

  • gjithçka është skedar. direktoria është gjithashtu një skedar
  • në inode ruhet metadatat e skedarit, por emri i skedarit nuk ruhet atje
  • emri i skedarit ruhet në të dhënat e direktorisë
  • madhe e direktorisë, ajo e cila tregohet në ls dhe sipas parazgjedhjes është 4KB, varet nga numri i skedarëve në direktori dhe gjatësia e emrave të tyre
  • është e qartë se sa më shumë skedarë, aq më i madh është madhësia e direktorisë

Tani, kjo është interesante: krijojmë një direktori me një milion skedarë, kontrollojmë madhësinë e direktorisë, pastaj fshijmë të gjithë skedarët dhe shohim madhësinë e direktorisë.

$ mkdir niceDir && cd niceDir
# në varësi të shpejtësisë së mbajtësit, komandat e mëposhtme mund të zgjasin 2-10 minuta
$ 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 .

Si mund të vëreni, madhësia e drejtorisë nuk është ndryshuar, megjithëse duket kështu 🙂

Të riparoni madhësinë e drejtorisë (pa e fshirë) mund të bëhet vetëm me anë të fsck (dhe opsionit -D) në gjendje të shkëputur.

Por kur shkova të kërkoj pse ndodhte kështu, u zbulua se para 10 vjetësh një sjellje e tillë ishte diskutuam në lkml. Dhe sipas mendimit të zhvilluesve, riparimi thjesht nuk ia vlen përpjekjet e thellesishme.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster